【なんで文字化けになるの?】
図示するとこういうことです。
トラックバック
Ping 元(Shift_JIS と設定)
↓
(Shift_JIS
の日本語)
↓
HaloScan
のサーバ ←(Shift_JIS
の日本語)→ HaloScan
のデータ
↓
(Shift_JIS
の日本語)
↓
トラックバック先(UTF-8
と設定) <=
ここでエンコードのミスマッチ!!
【どうなったらいいの?】
トラックバック先は
HaloScan
から送られて来たページを表示しているだけですし、そもそも
HaloScan
を利用しているということは自前で
CGI
など用意できないからで、トラックバック先で
Shift_JIS から UTF-8
に変換することは望めません。同じようにトラックバック
Ping 元でも同じように HaloScan
を利用しているかもしれないわけですから、ここで変換することも望めません。
そうすると
HaloScan の中で Shift_JIS から UTF-8
への文字コード変換をしてあげればよいことになります。
【それは可能なの?】
100%
の信頼性で行うことは不可能です。なぜならばトラックバック
Ping 元では Shift_JIS
の文字列であることを
HaloScan
に教えていないからです。HaloScan
はエンコードの自動認識をする必要があります。そして違うエンコードの文字コードには重なりがあります。この重なりがあるとどちらのエンコードなのか機械的に判断できません。
それでも重ならない文字コードが使われていればそれを見てエンコードが判断できます。エンコードの自動判定はこれを利用した機構なのですが、上記の理由で完全な自動判定は不可能なことなのです。
【ではどんな工夫があり得るの?】
一つは
HaloScan
が可能な限り質の良いエンコードの自動判定を行うようにするというものがあります。もう一つは、Ping
元が使用しているエンコードを
HaloScan
に教えるというものです。恐らく既存の国内のトラックバック先はこの方策を両方行っていると思います。つまり教えてもらえればそれを使って変換し、教えてもらえなければ頑張って判定して変換するのでしょう。このために文字化けが(ほとんど)発生しません。
【HaloScan
はそれを採用できるの?】
できません。
少なくとも低コストではできません。
なぜならば
HaloScan
は国際的なサービスだからです。日本語だけでも大きく分けて
5
つくらいのエンコードが使用されています。世界中の数多あるエンコードをノーヒントで言い当てられるようにするには相当大変なことです。寄付(と広告?)で成り立っている
HaloScan
にはそこまでのコストをかけられないでしょう。
そして、もう一つの方策のエンコードを教えてあげる方ですが、このための統一された規格はまだ無いようです。トラックバックは送り手と受け手がいるものですからお互いが理解しているやり方で教えなければなりませんが、その教え方が決まっていないのです。(少なくとも去年の今くらいはそうだったようです)
[本当にできないの?]
実は上のできない理由の前半には詭弁が含まれています。国際的なサービスだからといって特定の国だけに対応してはいけないわけではありません。ユーザ数の多い順などなんらかの基準で個別対応してゆけばいいのです。
現在、HaloScan
のトラックバック URL
は次のような形をしています。
http://haloscan.com/tb/YOURNAME/ENTRY_ID
例えば日本語にローカライズされたトラックバック
URL
を次のようにします。
http://haloscan.com/tb/YOURNAME/ENTRY_ID/ja_JP
このようにすれば
HaloScan の tb
というトラックバック用のプログラムは
ja_JP
用のローカライズされた処理を行えばよいと知ることができます。日本における日本語用の処理であればエンコードのバリエーションを減らすことができ、その範囲内ならばそれほどコストをかけずに対応できるはずです。
そして、その
ja_JP
に対応するところを予算に合わせて順次広げていけばよいのです。
#
願わくば日本が後回しになりませんように。
【規格は直ぐに決まるの?】
わかりません。最近の動向まで調べる余裕がいまありません。先日リリースの
HaloScan
が採用していないということは決まっていなさそうです。
わかりませんが、仮に明日決まったとしてもそれが広く普及するのはかなり先のことになるでしょう。それまでの間はその新しい規格と古い(エンコードを教えない)規格が混在することになります。その間、上のような自動判定の努力をしていなければ、文字化けの発生を容認せざるを得ません。(自動判定も完全にはできないので多少は容認せざるをえないですが...)
更に、仮に決まっても
HaloScan
は上の自動判定と同じ理由で一挙にサポートできません。世界中の色々なエンコードに全て対応するのはとても大変です。実は上の自動判定による変換をサポートしてゆくと、規格が決まっても既にサポートした部分はごくごくわずかな変更で対応できます。
【だからどうすればいいのさ!】
だから
HaloScan
はユーザが多い地域などの基準で順次ローカルな自動判定の対応をしてゆき、エンコードに関するトラックバックの規格が決まるのを待つと言うのがベストな方針です。