2

私はそれを理解していません。

私の場合、私のアプリケーションは、PHP サーバーからページの起動時に必要なすべての GUI テキストを JSON で送信しています。私の PHP サーバーでは、テキストの特殊文字はすべて UTF-8 で記述されています。例:Für

したがって、クライアント側ではまったく同じ値があり、入力フィールドを除くすべての場所にうまく表示されます。JavaScriptでこれを行うと:

document.getElementById('myInputField').value = "FÖr";

次に、特殊文字に変換することなく、そのように正確に記述します。

UTF-8 の概念に何か問題があることを理解しましたか?

ヒントをありがとう。

4

2 に答える 2

4

表記üは特にUTF-8とは関係ありません。文字参照の使用は、UTF-8 を使用する必要を回避する一般的な方法です。任意のエンコーディングで使用できますが、UTF-8 を使用する場合は必要ありません。

表記üは JavaScript ではなく HTML 表記です。JavaScript コード内に表示されたときに HTML ルールによって解釈されるかどうかは、コンテキストによって異なります (HTML ドキュメント内の JavaScript と別の JavaScript ファイルなど)。この問題を回避するには、文字をそのまま使用するか、文字にJavaScript表記を使用することをお勧めします。

たとえば、üは と同じ意味üです。つまり、U+00FC、ü (分音記号付きの u) です。文字列リテラル内で使用するための JavaScript 表記は、\u00fc(の\u後にちょうど 4 桁の 16 進数が続きます) です。たとえば、次は値を「Für」に設定します。

document.getElementById('myInputField').value = "F\u00fcr";
于 2012-05-19T13:48:18.510 に答える
3

HTMLエンティティと呼ばれるものを使用して、UTF-8と同じではない文字をエンコードしますが、もちろんUTF-8文字列にはHTMLエンティティを含めることができます。

問題は、タグ属性に HTML エンティティを含めることができないため、テキスト入力値属性を割り当てるときに他のエンコーディングを使用する必要があることだと思います。次の 2 つのオプションがあると思います。

クライアント側で HTML エンティティをデコードします。ブラウザーで利用可能なデコーダーにピギーバックするための非常に醜いソリューションです (例では jQuery を使用していますが、おそらく要点がわかります)。

inputElement.value = $("<p/>").html("F&#214;r").text();

より良いと思われる別のオプションは、サーバー応答で HTML エンティティを送信せず、代わりにすべての文字に適切な UTF-8 エンコーディングを使用することです。これは、テキスト ノードまたはタグ属性に配置されたときに正常に機能するはずです。もちろん、これは HTML ページが UTF-8 エンコーディングを使用していることを前提としています。

于 2012-05-19T13:55:25.450 に答える