外部.jsファイルでの文字化けを解決するには?

[上に] [前に] [次に]
Kazz [E-Mail] 2000/02/06(日) 15:49:36
.jsファイルについての質問です。
外部.jsファイルを使って日本語を書き出すようにさせると、
Mac用MSIEで文字化けが発生しました。
ちなみにHTML本文、.jsファイルともにShift_JISで記述し、
charsetで明示的に指定しています。
今は仕方なく.jsファイルの使用をやめて
HTML本文に直接記述してますが、
複数のページで同じスクリプトを使用しているので
できれば外部ファイル化したいと思ってます。
どうすれば解決できるのでしょうか?

三原克大 [E-Mail] 2000/02/06(日) 18:07:21
IE Macintosh Edition は、
外部 .js ファイルのエンコードを UTF-8 に固定してしまう
困った仕様を持っています。

手としては、
1. UTF-8 で書いてしまう
  これをやると、HTML 文書本体が UTF-8 を使っていないページでは
  他のブラウザだと文字化けが盛大に起こります。
2. エスケープ表現を用いて ASCII の範囲で記述する
  JavaScript の新しいバージョンでは、
  # Netscape Communicator 4.06 以降 (JavaScript 1.3 以降)
  # Internet Explorer 4.0 以降 (JScript 3 以降)
  Unicode 中の任意の文字を、コード指定で表現できます。
  %XXXX (X はhex)
  これは人間の手ではとても作りづらいので
  JDK 1.1 以降に付随する
  native2ascii コマンドを使うと作りやすくなります。
   % native2ascii (変換前の .js) > (変換後の .js)
  これをするとドリームパスポート (Dreamcast) などでは
  文字化けを起こします。

Kazz 2000/02/07(月) 13:49:58
三原さんありがとうございます
いただいた回答を理解するためにあちこち調べてたので
返事が遅くなりました。(まだ理解しきってませんが)

で、
> 1. UTF-8 で書いてしまう
この案を、Mac用MSIEとそれ以外とで処理分けして
実現できればなぁと思うのですが
(1)私が使っているエディター(EmEditor)は
肝心のUnicordでの保存ができないようです
Unicordでの保存ができるエディターや変換ツールって
どんなのがありますか?(できればフリーソフトで)
(2)処理分けの方法として試しに
--
<SCRIPT type="text/javascript">
<!--
if(navigator.appName.charAt(0) == "M" && navigator.userAgent.indexOf('Mac') != -1){
document.write('<SCRIPT type="text/javascript" ');
document.write('src="xxxutc.js" charset="Shift_JIS">');
document.write('<\/SCRIPT>');
}else{
document.write('<SCRIPT type="text/javascript" ');
document.write('src="xxx.js" charset="Shift_JIS">');
document.write('<\/SCRIPT>');
}
// -->
</SCRIPT>
--
ってやったらWin+NN3.0、NC4.7、MSIE5.0、
いずれもちゃんと動いちゃいました
<SCRIPT>の中に<SCRIPT>を埋め込んでも文法的にOKなんですか?
(動くんだからいいやと思いつつもなんか腑に落ちません)

Kazz 2000/02/07(月) 13:53:50
> document.write('src="xxxutc.js" charset="Shift_JIS">');

document.write('src="xxxutc.js">');
でした

無責任官庁 2000/02/08(火) 09:24:46
別な案を出すとすると…
フォームの <input type=hidden>で日本語の部分をデータ化してHTMLに
ひっそり埋め込むとか。
そしたら文字コードの心配をしないでいいし、機種による分岐も無い…
SSIとかにしとけば、JSファイルとセットで組み込むだけだし…

でも…HTMLの見た目がぶさいくになりますけどね。

なお、<SCRIPT>の中の<SCRIPT>については、私には分かりません。すみません。

Kazz 2000/02/08(火) 15:17:08
[[解決]]
無責任官庁さん、回答ありがとうございます
残念ながらプロバイダー(NeWeb)がSSIの使用を許可してないんです。

さて、UTF-8での保存の件ですが
「Windows98上でのutf-8のページの作り方」
http://thor.prohosting.com/~mktaka/html/utf8.html
を見て解決しました
何のことはないMSIE付属の「FrontPageExpress」でも
UTF-8での保存は出来るようなのですが、
過去の経験からこれはなるべく使いたくないので^^;
上のページで紹介されていた
「xyzzy」というエディタを使用することにしました
#実行サイズが1.2メガもあるのが玉に瑕ですが

<SCRIPT>の中の<SCRIPT>については未だによくわかりません
が、まぁ動いているんだから良しとしちゃおうかと思ってます

というわけで、とりあえず「解決」とさせていただきます
ご回答いただいた皆さま、ありがとうございました

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