BlankTar

about | blog | works | photo

iso-2022-jpってのは、7bitな文字コードです。
つまりどういうことかというと、asciiとしてデコードできちゃう。区別つかない。

わからないのは困るので、区別する方法を調べてみました。
iso-2022-jpはasciiの領域と区別するためにESC文字を使っているらしい。
日本語の文字は ESC $ B 的なのから始まる、ってことかな。($ Bだけじゃないらしいけど。
言われてみりゃ改行マークとか$とかいっぱい出るよね、iso-2022-jpが文字化けした時って。

ま、ともかくだ。このESC文字が含まれるかどうか、ってところを基準に調べることが出来るらしい。
pythonで書くとこんな感じ

>>> def IsASCII(string):
... 	return '\x1b' not in string

>>> IsASCII(u'abc'.encode('ascii'))
True
>>> IsASCII(u'abc'.encode('iso-2022-jp'))
True
>>> IsASCII(u'日本語'.encode('iso-2022-jp'))
False

結構短くていいね。

参考:
[C#] nkf を用いた文字コードの判別 - ヽ(´∀`)ノ
ASCII - Wikipedia

< pythonでテスト用のメールサーバーを建てる iPadではcssのbackground-attachmentを使えないらしい >