導致Web 伺服器返回的漢字亂碼的一個可能性——響應頭的編碼問題
阿新 • • 發佈:2018-11-22
響應頭的編碼問題導致的漢字亂碼
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')]
更新程式碼後重新執行,執行結果如下: