TCUP文字化け修復


なんかTCUPって化けやすくない?


能書きはいいから早く修復したい。

ごもっともです。修復したいURLを入れて「修復!」を押してください。

url:

化ける理由を知りたい

HTML中で、< > は直接は書けず、&lt; &gt; と書くことになっています。その時の処理が甘いようです。

例文久々だと文字化けだぜ・・・
文字単位   
JISコード ESC $B5W!9$@$HJ8;z2=$1$@$<!&!&!&ESC (B
間違った実体参照 ESC $B5W!9$@$HJ8;z2=$1$@$ &lt;!&!&!&ESC (B

TCUPは、受け取った文字列を実体参照するとき、 誤ってJISコード文字列中の < > も変換してしまうようです。

間違ったJISコード ESC $B5W!9$@$HJ8;z2=$1$@$&lt;!&!&!&ESC (B
間違った文字単位  ΑΑ 
文字化けした例 久々だと文字化けだう踉察ΑΑ・

なので、これを逆方向に変換すれば、もとの文章が修復できるというわけです。

ところが、この時、JISで表現されていた文字列が奇数個になった場合、どうなるかわかりません。 試行錯誤でやってみた結果がこのコード片です。 (試行錯誤でこれだけかよ!というご意見はもっともですが、とりあえずこれで治る気がします)

2003/08/04追記:
奇数だったら、最後の1文字を無視するように変更しました。 かんがえてみりゃ当たり前じゃん。

$jis =~ s/.(\e\(B)/${1}/;

このページで使っている修復cgiもダウンロードできます。


化けないために


というわけで

このページは、ニュース記事をもとに試行錯誤で作っているものです。 もし、これでも修復できないパターンがあれば、(消えないうちに)そのURLを教えてください。


What's new

2003/08/04 デッドリンク修正 (Queen → google)
2003/08/04 コードを少し改良・簡略化 (Thanks to suekoさん、LUCIFFERさん)
2002/04/23 コードを少し改良
2002/03/19 公開 (Thanks to もびーず)

連絡先: kuni@urawa.red-diamonds.net