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 は存在しないので注意。