プロが教えるわが家の防犯対策術!

プログラミングを学び始めて間もないものです。
ターミナルには問題なく日本語が表示されるのですが、py.exeで実行すると日本語が文字化けします。
英語版のwindows 10を使っています。
どうすれば正しく表示できるようになるでしょうか?
何か追加で確認すべきことがありましたら教えてください。

A 回答 (7件)

コマンドプロンプトのコードページはどうなってますか?

    • good
    • 0

>ターミナルには問題なく日本語が表示されるのですが、


>py.exeで実行すると日本語が文字化けします。


いまいち状況が。

ターミナルってコマンドプロンプトのこと?

py.exe は何処でどうやって起動されているのでしょう。
文字化けはどこの表示ですか?

UTF8で書いたソ―スで

py.exe ソースファイル名

で化けるという話ですか
それとも
インタープリターに入って、そのコマンドラインで化ける?

また、pythonのバージョンは?
    • good
    • 0

あー、なるほど、と言う事はこういう事かな。



例えば次のようなPythonコードを用意します(暫定的にtest.pyとしておきますが)。

print("こんにちわ、世界\n")

これはLinux上ですが、実行するとこうなるんですよね。

➜ ~ python test.py
File "test.py", line 1
SyntaxError: Non-ASCII character '\xe3' in file test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
➜ ~

こういうエラーが出てきませんか?

ところが、ファイル(test.py)をこう変えます。

# -*- coding: utf-8 -*-

print("こんにちわ、世界\n")

そうすると、端末で実行すれば、

➜ ~ python test.py
こんにちわ、世界

➜ ~

となるんですが、要するにファイル冒頭に

# -*- coding: utf-8 -*-

と言う「オマジナイ」が必要なんですが、ありますかね?
    • good
    • 0

あー、ちなみに。



その英語版WindowsのDOS窓とか、日本語表示問題なく表示出来てるんでしょうか?

例えば日本語のファイルやフォルダがある場所で、

dir

とか打てば問題なく日本語フォルダ名・ファイル名が表示されますか?
    • good
    • 0
この回答へのお礼

ここへの投稿は当該のパソコンから行っています。
windows機が2台あり、どちらも英語版を日本語化したものなのですが、どちらで実行しても同じ症状が出ます。
dirでも問題なく日本語が表示されます。

お礼日時:2018/09/28 15:21

あー、使ってるのはPython3系ですかね。


確かにsys.setdefaultencoding(‘utf-8’)ってのはPython2系のブツで、Python3だとデフォルトでUTF-8なんで、それは必要なくなってます。

と言う事は、レアなケースなんでなんとも言えないですが、原因は

> 英語版のwindows 10を使っています。

ってトコなのかもしれません。
つまり、UTF-8なんだけど、単純に日本語の端末表示に問題があるのか・・・(例えばフォントが用意されてない、とかですね)。

「教えてgoo」に問題なく書き込めてるトコ見ると・・・ううん?(でもひょっとしたらスマホからのアクセスですかね?)

取り敢えず思いつく事は、これをやってみてください、って事です。Pythonの問題じゃないとしたら、「英語版だから日本語表示出来ない」ってのが一番可能性が高いでしょうから。

外国語版 Windows 10 を日本語化する:
http://www.vwnet.jp/windows/w10/2016092501/Other …
    • good
    • 1

#1 さんの仰ってるのは、



import sys

してから、って話じゃないですかね?

pythonのデフォルトエンコーディングをutf-8に変更する:
https://qiita.com/puriketu99/items/55e04332881d7 …
    • good
    • 0
この回答へのお礼

やってみたのですが、
"message": "E1101:Module 'sys' has no 'setdefaultencoding' member; maybe 'getdefaultencoding'?",
と出ます。
getdefaultencoding をやってみたのですが、
UTF-8
と表示されるのは、デフォルトですでにUTF-8になっているのではと思います。

お礼日時:2018/09/28 12:05

sys.setdefaultencoding(‘utf-8’)

    • good
    • 0
この回答へのお礼

これをコードの頭に書けばいいのでしょうか?
undefined valuable "sys"`とエラーが出ます。
ほんとに初心者ですので、これをどうしたらいいのか教えていただきたいです。

お礼日時:2018/09/28 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A