toinamiの日記β このページをアンテナに追加 RSSフィード

2008-10-28 (Tue)

文字コード問題続き 12:00 文字コード問題続き - toinamiの日記β を含むブックマーク はてなブックマーク - 文字コード問題続き - toinamiの日記β 文字コード問題続き - toinamiの日記β のブックマークコメント

昨日のコメント欄でYuichirouさんからコメントいただきましたが

文字コード問題は正直面倒くさくてやってられません。(一般的技術者視点での発言)

dankogaiらEncodeモジュールのメンテナーには土下座どころか土下寝しても足りないくらいです。

# 「一般的技術者視点」って何だろう。

# どのように見られているかはともかくとして、私も一応畑違いではあるかもしれなけど「技術者」……いやまぁいいや。Web系なんかはYuichirouさんのほうが詳しいのは確かですが。


私の場合、文字を文字として扱う対応(※1)をしていれば、いくつかの文字について置換すれば済む話(※2)だというのをわかった上でアイデアを出しています。

ただ、それは方法としては「美しくない」対応であるのは間違いないですが……。

Encode.pmに組み込むとか言う話でもないのはしょうがないので以下略

* * *

※1:文字を文字として扱う対応ってのは、半角英数字だろうがいわゆる「全角文字」だろうが、内部的なバイト数にかかわらず1文字は1文字として扱う機能の話です。Perlほとんど触ったこと無いのですが、今は内部はUTF-8になってて文字単位に扱えるようになってたんじゃなかったでしたっけ?

文字を文字として扱わない場合、バイト単位で扱う場合なんかには例えば「i:t:キーワード誤抽出」で有ったような事も起こりますし、よほど速度優先じゃない限りは今時は普通に文字単位で文字を扱うのが主流じゃないかと。




※2:

例えば Java関係コミュニティでは、かなり古くから 「Unicode と各種エンコードでの変換時に問題が出る」ことは認知されていました。




こういった問題を経験してきた人間にとっては、泥臭い方法であろうとも「いくつかの文字については文字ごとに置き換えを行う必要がある」事は常識でした。それはYuichirouさんの常識とは違うかもしれないけれど、別に「ものすごく特殊」な事でも「面倒くさくてやっていられない問題」でもありません。(Encode系モジュールを作り直せ、と言う話ならともかく)

必要悪な美しくない対応、というだけ。

処理的には「はてなダイアリーXSS対策」より簡単でしょ。





余談1:

  • idea:9929 :はてなRSSのメール通知
  • idea:21499 :ダイアリコメントのメール通知

の2箇所だけ個別に対応する方がよほど場当たり的対応に思えるなぁ。全体でトーン合わせて欲しい。

アイデアとして出て対応されたのがこの2つというだけで、ダイアリの「その場編集機能」もd2.hatena.ne.jpで当初テストされていたときは「~」が化けたが、正式になったときには化けなくなったので、そこも何らかの対応がされていたはず。(http://beta.g.hatena.ne.jp/toinami/20071006/1191668345)





余談2:



なんかこんな事を延々と書いているだけで時間が過ぎていってしまった。

追記(10/30)

コメントどうもです。

Yuichirouさんにも私の考えていたことが多少わかっていただけたと思うので安心です。これで後ははてなに伝われば言う事はないのですが(苦笑) //あと2年くらい待てば良いですか(謎)


asakura-tさんからもコメントいただいてはいますが、私はperl使いじゃないので、実際の所そう言うモジュールとかの扱いもよくわからんのですよね。


# ただ私にとっては、他の言語では昔からやっていたことが、perlその他言語ではやられていないことが「なんでなんで?」になっているだけで。

# 本当はUnicode扱うなら、EncodeとかJcodeとか言う名前じゃなくてNormalize(正規化)噛ました上でなんかするのが正じゃないかとは思うのですが、Normalizeの範疇でもないようで。困ったものです。

YuichirouYuichirou2008/10/28 23:08未熟な私にはそんな歴史のある話だとは思っていませんでした。すみません。
改めて考えてみると、5年以上前にリリースされたはてなダイアリーが当初完全にEUC-JPオンリーだったことや、はてなが「ソースが仕様書」というアジャイルな開発スタイルを持っていることから、どうもエンコード・デコードをする必要が生まれるたびに場当たり的に変換して済ませてしまっていたのではないか、と思いました。場当たり的に変換してたから、場当たり的に修正するしかないと。
これ以上何か言うとはてなスタッフに怒られそうなので、やめておきます。適当にかみついてすみませんでした。

asakura-tasakura-t2008/10/29 10:50その辺はもう忘れ去られてるんでしょうねぇ。
レガシーエンコーディングプロジェクトで対応表作らないかなと思った事もあるのですが(あれももう何も動いていないのかな?)。
Perlに関してはJcode::CP932ってのを作った時に(いちおうの)対応表を作ったけど、CPANその他にアップして欲しいっていうリクエストもなかったくらいですし。

asakura-tasakura-t2008/11/01 11:33いや、Perlでも昔はやってましたよ。
正確にはエンコーディングの扱いに困ってた人々が言語/システムに関わらず集まってた感じかな(たぶんそのへんで風間さんの名前は見たような気がする)。
だからレガシーエンコーディングプロジェクトが改めて始まったときは期待したのですけどね。あのときにちゃんと啓蒙できなかったのが痛かったのかもしれません。
(あのとき集まってたのは既に問題を知っていた人だけであって、知らない人に啓蒙することにはならなかったみたいなので)
(利用している言語/システムに関わらず)MS系とJIS系の変換に伴う非互換については、知ってる人はいつものように対応するし、知らない人はなぜそんなことが起こるのか全く理解できてないような気もします。

トラックバック - http://beta.g.hatena.ne.jp/toinami/20081028