-3

これが私が試みていることですが、これを機能させる方法、または可能かどうかはわかりません-

  1. HTML ページがあり、この HTML ファイルから Javascriptを作成MyHTMLPage.htmしたいと考えて います。srcこれは非常に簡単です。<script src = "MyJavascript.js"></script>HTML ファイルにタグを含める予定であり、それを処理する必要があります。

  2. ただし、UTF-16 エンコーディングを使用して Javascript ファイルを作成したいと考えています。<script charset="UTF-16" src="MyJavascript.js"></script>そのため、HTML ファイルで次のタグを使用して処理する予定です。

  3. 今、私が本当に立ち往生している問題は、UTF-16エンコーディングを使用してJavascriptを作成する方法です-たとえば、私のJavascriptコードはalert(1);、コンテンツを含むJavascriptファイルを作成しました\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029\u003bが、実行時に有効なJavascriptとして実行されないようです。

要約すると、ここに私が持っているものがあります-

MyHTMLPage.html

...
...
...
<script charset="UTF-16" src="MyJavascript.js"></script>
...
...
...

MyJavascript.js

\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029\u003b

Firefox で HTML ページを開くSyntax error - Illegal characterと、ファイルの先頭に " " というエラーが表示されMyJavascript.jsます。上記の Javascript の先頭にBOM 文字 " " を追加しようとしまし\ufeffたが、それでも同じエラーが発生します。

Javascript ファイルを - " alert(1);" として作成し、テキスト エディターを使用して UTF-16 エンコーディングを使用して保存すると、ブラウザーは正常に実行されますが、" \u" 表記 (または代替エスケープ文字)を使用する方法はありますか?それでもJavascriptを正常に実行できますか?

ありがとう、

4

1 に答える 1

3

文字エンコーディングを誤解しています。文字エンコーディングは、文字が舞台裏でビットとして表現される方法のスキームです。

ファイルに「make it utf-16」と書くことはありません\u004a。これは文字通り 6 文字のシーケンスであるためです。

\、、、、、、u_ 0_ 0_ 4_a

上記を utf-16 として保存すると、次のビットとして表されます。

005C0075
00300030
00340061

utf-8 で保存すると、次のようになります。

5C753030
3461

これは、スペースと帯域幅の 50% を占めます。その文字を文字どおり ( ) に記述するのにさらに時間がかかりません: utf-8"J"のバイト ( ) だけです。4A

-notation は、"\u"ASCII 文字の小さなセットを使用するだけで任意の BMP 文字を参照する方法です。Unicode をサポートしていないテキスト エディターで作業している場合は"\u2665"、文字どおりに書く代わりに と書くことができ"♥"、ブラウザーはそれを適切に表示します。

奇妙な理由でまだ utf-16 を使用したい場合は、コードを通常どおりに記述し、ファイルを utf-16 として保存し、適切な文字セット ヘッダーを付けて提供します。

于 2012-10-22T15:20:59.793 に答える