python2.7符号化の問題

1294 ワード

python2.7デフォルトのascii符号化では、中国語に遭遇すると多くの欠点が発生します.
ネット上に関連する文章があります.見てみてください.ここでは私の実際の問題に基づいていくつかの点を補足します.
1、中国語の出力、特にファイルに出力するには、符号化開題に#coding:utf-8を加える必要があり、中国語文字は相応の符号化変換を行う必要がある.次のようになります.
str = u'
' e=str.encode('utf-8') with open('out.txt','w') as f: f.write(e) # (print), 。 print str

2、辞書に対しては出力です.辞書に中国語が含まれている場合、ファイルに出力しても中国語として表示したい場合は、いくつかの変換が必要です.
#!/usr/bin/python
# encoding:utf-8

import json

def dump(lst):
    fp = open("lst.utf8", "w")
    fp.write(json.dumps(lst, ensure_ascii=False))
    fp.close()

if __name__ == '__main__':
    dump([{'name': ' ', 'zone': 10}, {'name': ' ', 'zone': 20}])
# :
#[{"name": " ", "zone": 10}, {"name": " ", "zone": 20}]

辞書にunicode符号化文字が含まれている場合、すべてのunicode符号化をutf-8符号化に変換する必要がある.
方法は,キーワードごとに値を再付与し,トランスコード後の値を付与することである.
3、ファイルから読み取るときは、符号化の問題外に注意する必要があります.また、一部のソフトウェアでは、テキストの先頭にBOMが挿入されます.notepad++は符号化の問題とBOMの先頭に伴う問題を処理することができる.
以上の2つのステップは、見られるすべての符号化問題を基本的に解決することができる.廖雪峰のベテラン運転手がunicodeとutf-8コードを覚えなければならない理由を徐々に理解した.