トップ «前の日記(04/30/2014) 最新 次の日記(09/01/2014)» 編集

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


08/27/2014 ほげ [長年日記]

tDiary 4325日目

[Py][戯言] iso-2022-jp と utf-8 とわたし

分かってしまえば何ということもないことではあるのだけれど.

>>> p1 = u'ほげ'.encode('iso-2022-jp').decode('utf-8')
>>> p2 = u'ほげ'.encode('utf-8').decode('utf-8')
>>> print(p1)
ほげ
>>> print(p2)
ほげ
>>> type(p1)
<type 'unicode'>
>>> type(p2)
<type 'unicode'>
>>> p1 == p2
False

iso-2022-jp な encoded 文字列を utf-8 で decode できてしまうのが何ともややこしい.

>>> p1
u'\x1b$B$[$2\x1b(B'
>>> p2
u'\u307b\u3052'

要するにこういうこと. 上記は python2 系での出力結果だけれど,勿論 python3 系でも似たようなことは起こる.

こんな事を自分でやってしまうことはまずあり得ないと思うけれど,外部のライブラリが意図せず勝手にやってしまうことはある.

とあるライブラリが内部で utf-8 を決め打ちしていたせいで,この問題に少しはまってしまった記念パピコ. 単に print デバッグを試みただけでは原因を特定しづらいのが厄介である.

21st century なご時世に iso-2022-jp なんてデボン紀みたいな encoding 使ってんじゃねーよという諸兄にはおよそ関係のない話だ.