导致Web 服务器返回的汉字乱码的一个可能性——响应头的编码问题
响应头的编码问题导致的汉字乱码
Web服务器响应回前端的汉字可能会出现乱码的问题。导致汉字乱码的原因有很多种,归根到底都是出现在编码格式utf-8上面。
本人手写的原生代码服务器项目中出现一个汉字乱码问题。在用户名注册时,原本希望根据注册成败返回汉字提示信息。
服务器端注册代码如下:
#定义的注册函数
def register(env,set_headers):
status = '200 OK'
headers = []
set_headers(status, headers)
msg = env.get('MSG')
print('**************')
print(msg)
res = do_register(msg)
print('**************')
print('res=',res)
#根据执行具体的注册函数的返回值,向前端返回提示信息
if res == 1:
return '您已注册成功,请返回登录页面登录'
else:
return '用户名已存在,请返回注册页重新输入!'
然而在执行代码后,前台的返回信息如下:
返回提示信息乱码:
经过反复核对,并在度娘的帮助下,最终发现问题所在。出错的代码段如下:
def register(env,set_headers):
status = '200 OK'
headers = []
headers值为空,导致前端接收后端的中文信息时不能自动解码,正确代码格式如下:
def register(env,set_headers):
status = '200 OK'
headers = [('Content-Type', 'text/html;charset=utf-8')]
更新代码后重新执行,执行结果如下: