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 の公式文書はないんかい。
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)
佐々木さん
ありがとうございます。参考になります。
by nakagami (2006-04-17 20:08)