SSブログ

IronPython と CPython のエンコーディング宣言とかの挙動 [DotNET]

test1.py

# -*- coding: euc-jp -*-
s = 'あいうえお'
print s

test2.py

# -*- coding: euc-jp -*-
s = 'あいうえお'
print unicode(s, 'euc-jp').encode('Shift_JIS')

test3.py

# -*- coding: euc-jp -*-
us = u'あいうえお'
print us
print us.encode('Shift_JIS')

test4.py

# -*- coding: euc-jp -*-
s = 'あいうえお'
print s
print unicode(s, 'euc-jp').encode('Shift_JIS')

IronPython の結果

C:\>ironpythonconsole test1.py
あいうえお

C:\>ironpythonconsole test2.py
BDFHJ

C:\>ironpythonconsole test3.py
あいうえお
???¢???|?¨

C:\>ironpythonconsole test4.py
あいうえお
BDFHJ

CPython の結果

C:\>python test1.py
、「、、、ヲ、ィ、ェ

C:\>python test2.py
あいうえお

C:\>python test3.py
あいうえお
あいうえお

C:\>python test4.py
、「、、、ヲ、ィ、ェ
あいうえお

追記
エンコードの名称は、ここらへん↓のを指定できるんだと思う。
http://www.hitachi-to.co.jp/prod/prod_2/inter/emk/help/TextEncoder/CodePage.htm
・・・しかし、Microsoft の公式文書はないんかい。


nice!(0)  コメント(3)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 3

arai

Beta5のパーサーを調べるとFromFileメソッドからTryGetEncodingメソッドを呼び出して、ASCII以外のエンコードを判断しているようです。このメソッドで識別できなかったものをASCII固定で処理しているようです。このメソッドがBeta4から導入されていて、Beta5でバグ 対応が行われているようです。
Encodingはhttp://msdn2.microsoft.com/ja-jp/library/system.text.encoding(VS.80).aspxで確認することができます。
ご参考までに。
by arai (2006-04-12 19:04) 

佐々木

追記のリンク先を書いた者です。こんにちは。

そのページを書いた当時の主なネタ元はこちら。
http://msdn.microsoft.com/library/default.asp?url=/workshop/Author/dhtml/reference/charsets/charset4.asp

IANAに登録されているCharacter Setsはこちらです。
http://www.iana.org/assignments/character-sets
by 佐々木 (2006-04-17 19:41) 

nakagami

佐々木さん
ありがとうございます。参考になります。
by nakagami (2006-04-17 20:08) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0