2011年1月13日木曜日

PythonでのU+005CとU+00A5

U+00A5(¥)は円記号, U+005C(\)はバックスラッシュで,
SJISにしたとき問題になる可能性があることはよく知られている.

Python(2.6.6)でのこの挙動を確認してみた.

>>> print u'\u00a5'
¥
>>> print u'\u005c'
\
>>> print u'\u005c'.encode('sjis')
\
>>> print u'\u00a5'.encode('sjis')
\
>>> u'\u00a5'.encode('sjis') == u'\u005c'.encode('sjis')
True

CP932を使うことが多いので, そっちでも確認しようとしたらU+00A5は変換できなかった.
>>> print u'\u005c'.encode('cp932')
\
>>> print u'\u00a5'.encode('cp932')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'cp932' codec can't encode character u'\xa5' in position 0: illegal multibyte sequence

0 件のコメント:

コメントを投稿