html:
- head:
- meta http-equiv="Content-Type" content="text/html;charset=iso-2022-jp": /
- title: py23str
- style: 'pre{ background: lightgray; }'
- style: 'img{ max-width: 100%; height: auto; }'
- style: 'h3{ border-left: solid gray; padding: 1em 0.5em; }'
- body:
- h1: Python2とPython3での日本語文字列対応について
- p:
- 毎回、同じようにつまづいて、同じような感じで対応してます。
- p:
- なので、いいかげん自分に判りやすいようにまとめておきます。
- p:
- 日本語対応といっても、ソースコード中に日本語を書くつもりはありません。
- p:
- データはYAML形式のファイルで用意。
- p:
- そして、YAML形式データファイル中の文字列を、UTF-8で日本語に置き換えようとして、
- 毎回「うぅっ」とうなってます。
- h2: 結論
- h3: 日本語を含む文字列処理で .foramt() や .join() を使いたい
- p:
- Python2 では日本語を含む文字列は .encode('utf-8')して UTF-8 で保持。
- p:
- Python3 では日本語の有無に関係なく、素直にstrのままでよし。
- h3: 日本語を含むUTF-8のテキストを標準入力、標準出力で扱いたい
- p:
- Python2 では素直に sys.stdin/sys.stdout を read/write。
- p:
- Python3 では sys.stdin.buffer , sys.stdout.buffer を使う。
- p:
- Python2 の世界には .buffer は存在しないので注意。