1

AJAX呼び出しを介してサーバーからデータを取得し、responseDiv.innerHTMLを使用して結果を表示しようとしています。サーバーからのデータは、za \u010DattestのようなUnicode要素で部分的にエンコードされています。応答divのinnerHTMLを設定することにより、これはそのまま表示されます。つまり、Unicodeはブラウザで実際の表現に変換されません。

含まれているページの文字セットはUTF-8に設定されています。Unicode表現をHTMLエンティティに変換するなど、他のほとんどのことを試しましたが、それも機能しないようです。

サーバーからのテキストにもHTMLタグが混在していることにも言及する必要があります。HTMLタグは、本来あるべき姿で尊重されます。たとえば、サーバーからのテキストがとして来る場合<b>Bold this!</b>、テキストは太字になります。

助けていただければ幸いです。

ヴィクラム

4

2 に答える 2

0

「\u010D」を「č」に置き換えることはできますか?

innerHTMLを設定している場合、サーバーからのHTMLタグが機能するはずです。

これは私のために働く:

document.getElementById('info').innerHTML = "&#x010D; <b>Bold this</b>";

ところで - Fiddler や Firebug などを使用して、サーバーから期待どおりの結果が得られるようにすることができます。

更新: 正規表現を使用して、Unicode 文字を見つけて HTML エンティティに置き換えます。

$.get('data.txt', function(data) {
    data = data.replace(/\\u([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])/g, '&#x$1$2$3$4;');
    document.getElementById('info').innerHTML = data;
});
于 2009-06-19T03:55:58.270 に答える
0

Unicode リテラルを直接文字に変換するだけです。

'H\u0065\u006Clo, world!'.replace(/\u([0-9a-fA-F]{4})/, function() {
    return String.fromCharCode(parseInt(arguments[1],16));
});

于 2009-09-24T01:48:19.937 に答える