JavaScript の日本語処理について?

[上に] [前に] [次に]
miyasiro [E-Mail] 1997/12/26(金) 22:43:41
 漢字(日本語)文字列に対して charAt() や substring(n,n+1) が返す
文字について教えて下さい。

JavaScript で、s = "漢字" の場合、s.charAt(0) は、うちの
Windows95, MSIE 3.02 では、"漢" が返り、
Windows95, NN 4.01 では、S-JIS の第1バイトの 8Ah が返るようです。

iskanji="≠ヤ炎旧克署葬灯楓利劒屆撼游矮聿褂鉅鳰"
    (81h〜9Fh, E0h〜FCh)
とすると、iskanji.indexOf( s.charAt(0) ) が 9 となることから確認しました。

 そこで、疑問なのですが、
1.Windows95 や Mac では、バージョンにかかわらず、MSIE は漢字1文字、
NN は S-JIS の第1バイトを返すと考えてよいのでしょうか?
2.また、他の文字コード(EUC とか)で動作する環境では、s.charAt(0) は、
どのような値を返すのでしょうか?
3.さらに、サーバの HTML ファイルで用いられる文字コードが影響する場合が
あるのでしょうか?

miyasiro [E-Mail] 1997/12/30(火) 02:41:06
 Open Space(http://www.shiojiri.or.jp/~openspc/) の JavaScript Library の
「文字」に「日本語文字処理」のライブラリがあるのを見逃していました。
 文字コードも escape を使えば簡単に取得できますね。上の iskanji は大ボケ
でした(苦笑)。
 それから、このライブラリの解説の雰囲気から、Shift-JIS の環境では、事情は
ほぼ同じようです。
 ただ、ここのライブラリも完全に Shift-JIS に依存するので、2.の疑問は
解消しませんでした。Shift-JIS 以外のコードで Java Script が実行される環境では
どうなるのか、よろしくお願いします。

takagi7 [E-Mail] [HomePage] 1998/02/03(火) 10:29:15
小生は、以下の方法でIE、ネスケの日本語処理に対応しています。
・HTMLのHEAD部のMETAにcharset=x-sjisを設定し(とほほのWebテクニック)、強制的にシフトJISコードにします。
・後は、miyasiroさんと同じように、ブラウザのタイプを認識して、ブラウザのタイプに応じた文字取り込み(IEは漢字1文字、 ネスケは1バイト)処理を行っています。

miyasiro 1998/02/03(火) 16:02:34
Res ありがとうございます。
>・HTMLのHEAD部のMETAにcharset=x-sjisを設定し(とほほのWebテクニック)、
>強制的にシフトJISコードにします。
 charset=x-sjis を設定することで、クライアント側のブラウザの実行環境にかかわらず
(例えば UNIX 上でも) Java Script の String オブジェクトの日本語文字コードを
強制的に Shift-JIS に設定できるのでしょうか?
 そうであれば、おおだすかりなんですが…
 試しにうちの Windows95 の環境で、

<HTML><HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=x-euc-jp">
</HEAD><BODY>
<SCRIPT LANGUAGE="JavaScript">
document.write('漢 ('+escape('漢')+')');
</SCRIPT>
</BODY></HTML>

のような HTML ファイルを EUC で作成し('漢'の文字コードは実際は'B4C1')、
ローカルでブラウザ(NN4)に読み込ませた結果は、「漢 (%8A%BF) 」と表示されました。
つまり、うちの環境では、EUC で書いた文字列も Java Script の String オブジェクトの
内部では Shift-JIS に変換されているようなんです。
 ということは、charset=x-sjis を設定し Shift-JIS で Java Script を書いても、
UNIX 上のブラウザでは、EUC で実行されることになると思うのですが…

[上に] [前に] [次に]