Changes between Version 1 and Version 2 of PythonJISX0213


Ignore:
Timestamp:
04/03/09 16:58:03 (10 years ago)
Author:
sgk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PythonJISX0213

    v1 v2  
    1818「\u3351」は「㍑」です。 
    1919 
    20 [http://python.org/doc/2.4.4/lib/standard-encodings.html Python内蔵のコーデック]は割とクソまじめで、エンコーディング方式の微妙な違いをちゃんと区別する。「`iso-2022-jp`」「`sjis`」「`euc-jp`」は[http://ja.wikipedia.org/wiki/ISO-2022-JP ISO-2022-JP]相当の文字しか表現できない。ここには、通称「JIS2004」の[http://ja.wikipedia.org/wiki/JIS_X_0213 JIS X 0213]で追加された文字を含まない。このため、「㍑」をエンコードできなくてエラーになる。 
     20[http://python.org/doc/2.4.4/lib/standard-encodings.html Python内蔵のコーデック]は割とクソまじめで、エンコーディング方式の微妙な違いをちゃんと区別する。たとえば「`iso-2022-jp`」「`sjis`」「`euc-jp`」は[http://ja.wikipedia.org/wiki/ISO-2022-JP ISO-2022-JP]相当の文字しか表現できない。ここには、通称「JIS2004」の[http://ja.wikipedia.org/wiki/JIS_X_0213 JIS X 0213]で追加された文字を含まない。このため、「㍑」をエンコードできなくてエラーになる。 
    2121 
     22電子メールやウェブなど、ネット上の文字のやりとりでは、メタ情報にエンコーディング方式の名称を含めるのが一般的(`charset`の話)。 
     23`charset`に`iso-2022-jp-2004`が指定されたデータは見たことが無い(IANAに登録完了してないからあたりまえか)。 
     24でも、電子メールでもウェブでも「㍑」などのJIS2004の文字をやりとりできるのが普通。 
     25つまり、 
     26 * `charset`は、`iso-2022-jp`。 
     27 * 「㍑」などJIS2004の文字をエンコードできてしまう。 
     28 * エスケープシーケンスは、`iso-2022-jp`のやり方。「㍑」は「`\033$B-H\033(B`」。 
     29という、デタラメなことになっている。 
     30これがいわゆる「機種依存文字を使うな」と言われる問題。 
     31「㍑」は今や「機種依存文字」ではないのにね。 
     32 
     33Pythonで電子メールやウェブのデータを処理しようとして、`charset`に`iso-2022-jp`と書いてあったからと言って、素直に`iso-2022-jp`でデコードしようとすると、「㍑」を含んでいるとエラーになる。しかし、`iso-2022-jp-2004`でデコードしてもエラーになる。なぜならば、JIS2004に厳密に従うならば、上記の例の「`\033$B-H\033(B`」というデータは存在し得ないから。 
     34 
     35苦肉の策、別名「ハック」。 
     36{{{ 
     37>>> decoded = encoded.replace('\033$B', '\033$(Q').decode('iso-2022-jp-2004') 
     38>>> encoded = decoded.encode('iso-2022-jp-2004').replace('\033$(Q', '\033$B') 
     39}}} 
     40 
     41ネット上の日本語データの取り扱いに適した、ゆるいコーデックが欲しいところ。 
     42 
     43めんどくさい。そもそも、ISO-2022-JPを決めるときに半角カナを排除しやがったのが…(違う話か)。 
     44なんだかんだ言っても、UTF-8でやりとりするのが一番楽かもね。 
     45メールもUTF-8で送りゃいいだろって言う外国人が正しく思えてきた。 
     46あ、「~」がマックとウィンドウズで逆に表示される問題があるんだっけ。 
     47 
     48そういえば、昔は良くも悪くもISO-2022-JPを制定するなど、規格化しようとがんばった人たちが居たんだけど、最近はそういう人が居ないね。 
     49MUAなり、ブラウザなり、携帯なり、製品の実装ありきandそれしか無いのが今の世の中。 
     50規格が無いものだから、デタラメで自分勝手な実装ばかり現れておかしな事に成る。 
     51だって、「このメールソフトは規格に厳密なので、『㍑』や『①』は書けません」なんてメールソフトは、誰も使いたくないもんね。 
     52 
     53携帯やさんとか、グーグルとかヤフーとか、ネットで商売している会社が集まって提案してくれないかなあ。 
     54今は、学者さんが理想を現実に持ち込む時代とは違うというのは、確かにそう思う。 
     55 
     56''(2009/4/4 - sgk)''