Unicodeだがunicodeはない
実質的に初版のItem 3の続投であるが、初版はPython 2の文字列であるstr
とunicode
、Python 3のbytes
とstr
の違いを含めて説明があったが、
2版ではPython 3向けの説明に特化して更新された。
単純にPython 2向けの説明を削ったのではなく、システムのエンコーディングに関する注意が追加されている。
自分の手元のPC(Windows 10)の環境でエンコーディングを調べてみた。
> python -c "import locale; print(locale.getpreferredencoding())" cp932
日本語圏のWindows OSのPCなのでcp932であった。
localeのドキュメントを読んで、getdefaultlocale()
も試してみた。
>>> import locale >>> locale.getpreferredencoding() 'cp932' >>> locale.getdefaultlocale() ('ja_JP', 'cp932')
業務でも、お客さんの環境はWindowsでExcelでCSVファイル開くというシチュエーションは(日本だと)頻出どころか必ず遭遇する問題である。 しかもcp932にあってShift_JISにはない文字を使われるなど日常茶飯事である。 必ずしもUTF-8エンコーディングではないという現実を受け入れつつ、『Effective Python 2nd ed.』に書かれているアドバイスを実行していこう。