ホームページ  >  記事  >  バックエンド開発  >  Pythonの漢字が文字化けする

Pythonの漢字が文字化けする

巴扎黑
巴扎黑オリジナル
2016-12-09 11:21:071611ブラウズ

Python を使用してネットワーク ログ ファイルを解析する予定です。

必然的に漢字化けの問題に遭遇しました。

私の弟は以前 Java を学んでいましたが、私は中国語の文字化けの問題を解決するために Python を使い始める方法が本当にわかりません。

Javaでデバッグを通ったコードが、Python環境に置かれると腹が立ってしまいました。

多大な努力の後、Oschina の助けを借りて、問題は最終的に解決されました。

Python エンコーディングの主な考え方は次のとおりです:

1. 文字列

2. Unicode

3. ターゲット エンコーディング セット (CP936、GB2312、GBK、GB18030 は相互に直接変換されるようです。ほとんどのエンコーディングは同)

Python のシステムコーディングの構造を理解するには、まず次のコード部分を見てください:

import locale 
  
def p(f): 
    print '%s.%s(): %s' % (f.__module__, f.__name__, f()) 
  
# 返回当前系统所使用的默认字符编码 
p(sys.getdefaultencoding) 
  
# 返回用于转换Unicode文件名至系统文件名所使用的编码 
p(sys.getfilesystemencoding) 
  
# 获取默认的区域设置并返回元祖(语言, 编码) 
p(locale.getdefaultlocale) 
  
# 返回用户设定的文本数据编码 
# 文档提到this function only returns a guess 
p(locale.getpreferredencoding) 
  
# \xba\xba是'汉'的GBK编码 
# mbcs是不推荐使用的编码,这里仅作测试表明为什么不应该用 
print r"'\xba\xba'.decode('mbcs'):", repr('\xba\xba'.decode('mbcs')) 
  
#在笔者的Windows上的结果(区域设置为中文(简体, 中国)) 
#sys.getdefaultencoding(): gbk 
#sys.getfilesystemencoding(): mbcs 
#locale.getdefaultlocale(): ('zh_CN', 'cp936') 
#locale.getpreferredencoding(): cp936 
#'\xba\xba'.decode('mbcs'): u'\u6c49'


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。