Python2.6で日本語(UTF-8)が文字化けしてしまいます。
非常に困ってます。よろしくお願いします。
使用OS Windows7
使用エディタ SciTE
#coding: shift-jisだとエラーがでます。
標準入力、標準出力、標準エラー出力の文字コード cp932
コード
# coding: utf-8
import random
class Dice:
def __init__(self,val=6):
if val not in [4,6,8,12,20]:
raise Exception('そんな正多面体はありません。')
self.face_num = val
def shoot(self):
return random.randint(1,self.face_num)
------------------------------------------------------------
実行
C:\Users\eric\pyworks>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import dice
>>> a =dice.Dice(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "dice.py", line 8, in __init__
raise Exception('縺昴s縺ェ豁」螟夐擇菴薙・縺ゅj縺セ縺帙s縲・)
Exception: 縺昴s縺ェ豁」螟夐擇菴薙・縺ゅj縺セ縺帙s縲
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
うん。
そうですね。例えば、UTF-8ベースのUbuntu Linuxだと問題は生じてません。# ここから
In [1]: import dice
In [2]: a = dice.Dice(9)
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
/home/cametan/<ipython console> in <module>()
/home/cametan/dice.pyc in __init__(self, val)
6 def __init__(self,val=6):
7 if val not in [4,6,8,12,20]:
----> 8 raise Exception('そんな正多面体はありません。')
9 self.face_num = val
10
Exception: そんな正多面体はありません。
In [3]:
# ここまで
って事は、#1氏の仰る通り、端末の出力指定をUTF-8に直すのが一番手っ取り早いだろう、と言う事です。
Windowsの場合、もしDOS窓使ってるんでしたら、DOS窓上で
chcp 65001
と打てば文字コードをUTF-8に変更出来る模様です。
この回答への補足
ご丁寧にありがとうございます。しかし、DOS窓上で
chcp 65001 と打ってもうまくいきませんでした。
#ここから
Active code page: 65001
C:\Users\eric\pyworks>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import dice
>>> a = dice.Dice(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "dice.py", line 7, in __init__
raise Exception('?????“?????£?????¢??“?????????????????“???')
Exception: ?????“?????£?????¢??“?????????????????“???
#ここまで
No.1
- 回答日時:
utf8で書かれた文字列がshift-jisに解釈されたように見えますね。
出力端末をutf8にするか、文字列出力をshift-jisに合わせればいいでしょう。
あと、一応unicode文字列は u'' とくくった方が良いのでは。
この回答への補足
回答ありがとうございます。
>>あと、一応unicode文字列は u'' とくくった方が良いのでは。
これはこういう事ですよね。ソースコードで
前)raise Exception('そんな正多面体はありません。')
後)raise Exception(u'そんな正多面体はありません。')
#ここから(chcp 65001と打った後です。)
>>> a = dice.Dice(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "dice.py", line 7, in __init__
raise Exception(u'?????“?????£?????¢??“?????????????????“???')
Exception
#ここまで
以上のようにExceptionが表示されなくなってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
AIに回答させるって
-
プログラムについての質問です...
-
VBAでテキスト出力時のスペース...
-
VBAで有効数字の設定
-
LaTeX:tableofcontentsによる目...
-
アクセスでエクセルに出力する...
-
携帯の液晶画像をパソコンに出...
-
Accessのテーブルからcsv出力す...
-
coutで出力した文字を消去する...
-
4Kの外部モニターに出力すると...
-
C#でアクセス権限の取得方法が...
-
改行の仕方
-
C言語の標準関数の引数の順番に...
-
COBOLのMOVEで桁数が異なる場合
-
KEYENCEのシーケンスプログラム...
-
printfの書式%.*s
-
OBS配信すると、マイクが途切れ...
-
wsprintfで浮動小数を扱うには?
-
Excel VBAで値を変えながら、pd...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
コンセントの電力は入力と出力...
-
MMDでavi出力が出来ない
-
OBS配信すると、マイクが途切れ...
-
VBAでテキスト出力時のスペース...
-
cout と cerrの違い
-
COBOLのMOVEで桁数が異なる場合
-
ACCESS クエリ→フォーム...
-
アクセスでエクセルに出力する...
-
VBAのExecメソッドで画面を非表...
-
テキストファイルから特定の文...
-
Windows11対応の3入力1出力 USB...
-
VBAで有効数字の設定
-
スマホのバッテリー消費につい...
-
Excel VBAで値を変えながら、pd...
-
NTTのホームゲートウェイとOCN...
-
定格冷房能力(出力)とは 定格...
-
プログラムについての質問です...
-
PS5をMacBookProに出力したいの...
おすすめ情報