JavaScript:Scriptから表示させると化ける文字 199903.01

JavaScriptから文字を表示させる場合に、一部の文字だけが文字化けする現象が起きます。日本語の文字コードをJavaScriptが真面目に解釈していないのが原因で、HTML本文やステータスバー、アラートなどで発生します。ふざけてますね。
JavaScriptが同居していても、HTMLソースにじかに書き込んである場合には大丈夫です。あくまで<script>〜</script>タグ内の問題。閲覧者のブラウザのバージョンに依存しますので、自分の環境でちゃんと見えても関係ありません(-.-;)

さて、いくらブーイングしても文字化けは直らないので、スクリプトの書き手が回避手段を取るしかありません。
今回の文字化けは、シフトJISコードの後半が"5C"の文字で発生します。次の字を巻き込んで化けます。文字列の末尾にあった場合、最悪ではJavaScriptエラーを起こして止まってしまいます。
回避方法は次の通り。

しょっちゅう出てきそうでとりわけ危険な文字はこれだけあります。テロップを流そうとしている場合等は注意しましょう。

出現頻度が特に高い文字
ソ・十・表
よく使う文字
噂・欺・圭・構・申・貼・能・暴・予

Scriptで回避する方法もありますが、長くなりそうな気配なので、作るかどうか考慮中。最終更新日Scriptの二の舞は嫌(;_;)


※文字化け見本のうち、カタカナは実際には1byteのいわゆる半角カナ。〓は表示できない文字

Shift_JIS 文字 備考
815C ― ダッシュ。長音(ー)でもマイナス(−)でも罫線(─)でも漢数字(一)でもない。
コード表で長音(ー)とハイフン(‐)の間にある字
835C ソ 頻出字!要注意。片仮名のソ
845C Ы ロシア文字
865C (Mac依存) 機種依存文字、Mac上でギガバイト(GB)。そもそも使わないように。
875C (Win依存) 機種依存文字、Win上でローマ数字の9(IX)。そもそも使わないように。
895C 噂  
8A5C 浬 海里を1文字で書いた字。地上のマイルは哩
8B5C 欺  
8C5C 圭 人名として要注意。「圭子」→「月q」(^^;)
8D5C 構 「構成」→「告ヤ」
8E5C 蚕  
8F5C 十 頻出字!要注意。漢数字の十
905C 申 「申し」→「垂オ」
915C 曾 曽と異体字。「曾祖父母」→「荘c父母」
925C 箪 「瓢箪から駒」→「瓢窒ウら駒」
935C 貼 「貼付」→「燈t」
945C 能 「能力」→「迫ヘ」
955C 表 頻出字!要注意。「表示」→「侮ヲ」
965C 暴 「暴風雨」→「抹莱J」「暴力」→「沫ヘ」
975C 予 頻出字!要注意。「予定」→「嵐〓」、「予想」→「卵z」
985C 禄 「元禄時代」→「元〓梠〓」
995C 兔 兎と異体字。免(免許)ではない
9A5C 喀 「喀血」→「嚮〓」
9B5C 媾  
9C5C 彌  
9D5C 拿  
9E5C 杤 栃ではない
9F5C 歃  
E05C 獺  
E15C 痣 あざ
E25C 秉 乗(乗る)ではない
E35C 窖  
E45C 臀 「臀部」→「苺〓」
E55C 縵  
E65C 聚  
E75C 軆 体の旧字
E85C 鐔 刀の"つば"
E95C 饅 「饅頭」→「體ェ」食いしん坊は要注意(^^;)
EA5C 袍  
これ以降の文字はすべて機種依存のため、そもそも使ってはいけません。

なんでこんなにあるのだ。いや原因は解ってますけど。