Pythonで簡単なコンソールアプリケーションを作っているのですが、日本語が一部文字化けする端末があり困っています。
現象
PCが2台あり、片方だけで発生している現象です。
コマンドラインで実行するとこんな感じになります。
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print 'ほげ' ほー >>> print 'ふが' ふェ >>> print 'ぴよ' ぴ・ >>> print u'ほげ' ほー >>> import sys >>> sys.getdefaultencoding() 'cp932'
sitecustomize.py
でsetdefaultencoding
してascii
からcp932
に変えてあるのですが、変更前後で現象は変わりません。
同じようにファイルに書いて実行しても
test.py
1# coding: cp932 2print 'ほげ'
>python test.py ほー
同じ化け方をします。
コードページの指定を# -*- coding: cp932 -*-
にしても変化ありません。
>>> print('ほげほげ') ほーほげ >>> print('ふがふが') ふェふが >>> print('ふがふがふが') ふェふがふが
試した限りでは2文字目が怪しいように見えます。
>>> print(['ほげ']) ['\x82\xd9\x82\xb0'] >>> print(['ほげほげ']) ['\x82\xd9\x82\xb0\x82\xd9\x82\xb0'] >>> print(['ふが']) ['\x82\xd3\x82\xaa'] >>> print(['ふがふが']) ['\x82\xd3\x82\xaa\x82\xd3\x82\xaa']
文字コード的には問題がないように見えます。
なお、他の言語は、と思って試しましたがRubyは問題ありませんでした。
環境
発生する環境
- Windows10 Pro x64
- Windows Insider Program (スローリング) build14965.1001
- Python 2.7.11 (32bit / 64bitいずれも発生)
発生しない環境
- Windows10 Home x86
- Insider Program未参加
- Anniversary Update未適用
- Python 2.7.11
両方の環境でそれぞれchcp
コマンドを実行すると、いずれも932になります。
どなたかお知恵をお貸しください。よろしくお願いします。
エンコードの指定を’# -*- coding: cp932 -*-’とした場合はどうですか?
可能性は低いですが、両方の環境のコマンドプロンプトで`chcp`と入力して同じコードページになってるか確認してみてください。
コメントありがとうございます。`# -*- coding: cp932 -*-`は現象に変化ありませんでした。chcpの結果はどちらも932です。
追記ありがとうございます。ふーむ、謎ですね。。もしかして常に最後の文字だけ化けるのでしょうか?
sharowさん。同じく謎ですね。今、同じ現象を海外サイト(日本語使わないから無駄かも)も含めて探しています。因みにTomoyukiSatoさん、昨日もWindows10のアップグレードで私も時間かかりましたが、各マシンのアップグレード処理に違いはありますか?
手元のWindows10 Pro x64のPython 2.7.6では再現しませんでした。2文字目だけおかしくなるとのこと、何かとても深い闇を感じざるを得ません。 ところで発生するPCのWindowsは64bit版なのに「MSC v.1500 32 bit (Intel)」となっていることから32bit版を導入されているのではないでしょうか。原因が分からないまま何か勧めるのもアレなんですが、64bit版のPythonも試してみてはいかがでしょう。
print ['ほげ']とか、print ['ぴよ']、またprint ['ぴよ'ぴよ]、print ['ふがふが']等を実行して結果を載せていただけませんか?
print ['ぴよぴよ']でした。誤記です。申し訳ない。
あなたの回答
tips
プレビュー