首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 中文輸出亂碼解決:encode/decode 與 sys.setdefaultencoding 兩大方案

     編輯:更多程式設計知識

方案一:顯式 encode / decode(推薦)


# 讀取 Excel 中文 sheet 名
name_bytes = sheet.name.encode('utf-8')   # str → bytes
name_str = name_bytes.decode('utf-8')     # bytes → str
print(name_str)

原則:內部統一用 Unicode (str),邊界處理時顯式編解碼。Python 3 默認字符串即 Unicode,無需此操作。

方案二:修改默認編碼(僅 Python 2,強烈不推薦)


import sys
reload(sys)
sys.setdefaultencoding('utf-8')

危害:

  • 影響全局行為,導致第三方庫異常;
  • 掩蓋真實編碼問題,部署環境不一致時極難排查;
  • Python 3 已移除 sys.setdefaultencoding。

最佳實踐清單

  1. 源文件頭部聲明 # -*- coding: utf-8 -*-;
  2. 讀寫文件顯式指定 open(..., encoding='utf-8');
  3. 網絡請求根據 Content-Type 或 chardet 解碼;
  4. 數據庫連接指定 charset(如 charset=utf8mb4);
  5. 控制台輸出確保終端編碼為 UTF-8(Windows chcp 65001)。

常見亂碼場景速查

現象原因修正
打印顯示 \xe4\xb8\xadbytes 直接打印.decode('utf-8')
存入 MySQL 變 ???連接未指定 charsetconnect(charset='utf8mb4')
讀取 CSV 報 UnicodeDecodeError文件非 UTF-8open(encoding='gbk') 或 chardet 檢測
Windows 控制台亂碼終端編碼非 UTF-8chcp 65001 / 使用 Windows Terminal
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved