久しぶりに、JUGEM ユーザー助け合い掲示板よりネタを拝借。
コメント欄の文字化け
正確には「文字化け」ではないですね。
記号が実体参照変換されたことで、一見すると意味不明な数字の羅列になってしまい、それが文字化けに見えるという現象。
JUGEM に限らず、ブログのコメント欄には記号を投稿できないことが多いようです。
悪質なスパマーに実行可能なスクリプト等を投稿されないようにと、セキュリティ上の仕様と思われます。
ただし記号くらいは投稿できるようにできないものかという気持ちも分からなくはないわけです。
(環境によって表示できないことがあるので、個人的にはあまり使う気にはなれませんが)
記号を表示するのに必要なメタ文字の & が自動的に実体参照変換されることが、この現象の直接の原因です。
サーバー側の処理は、クライアント側からはいかんともしようがないので、実体参照変換して書き出された文字列を、さらに書き直すくらいしかできそうもありません。
そんなわけでやっつけで作ってみました。
まずは下準備として、コメント欄(フォーム除く)を適当な ID を持つタグで囲みます。
赤字の部分です。
<div id="posted_comments">
<!-- BEGIN comment -->
〜 省略 〜
<!-- END comment -->
</div>
で、html の最後の方、</body> の直前あたりに以下のスクリプトを貼り付けます。
<script type="text/javascript">
<!--
document.getElementById('posted_comments').innerHTML =
document.getElementById('posted_comments').innerHTML.replace(/&/g,"&")
//-->
</script>
やっつけ仕事なんで、トラブル起こっても知りません。(無責任)
一応、FIrefox12、IE8、Google Chrome19、SafariとOpera(バージョン失念)で動作確認。
ただし Safari では、質問にもあるハングル文字は・・・と表示されてしまいました。
これは私の Safari にハングルがインストールされてないとか、そんな理由かもしれませんが。
当面の間、このブログには設置したまま様子見ておきます。
何か変なことがあったらお知らせください。