2009-06-19 6 views
1

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

含まれるページの文字セットがUTF-8に設定されています。私はユニコード表現をHTMLエンティティに変換するなど、他の多くのことを試しましたが、どちらもうまくいかないようです。

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

助けてください。 '&#x010D;'

ビクラム

答えて

0

あなたは '\ u010D' と置き換えることができますか?

AFAIK innerHTMLを設定する場合は、サーバーから送信されるHTMLタグが機能するはずです。

これが私の作品:ところで

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

- あなたはあなたがサーバーから期待するものになっていることを確認するためにフィドラーまたはFirebugのようなものを使用することができます。

更新:

$.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; 
}); 
+0

Hmm ..テキストはデータベースに保存されているので、おそらくサーバーに送信する前にUnicodeからHTMLEntityへのコンバータを実行することができます。代わりにクライアント側のUnicode部分のみを変換する方法はありますか? –

+0

は代替案で回答を更新しました。応答を文字列として扱うようにjavascriptを強制します。 – russau

+0

良い提案。唯一の問題は、データには文字列を含むHTMLが含まれていることです。したがって、データには次のようなマークアップが含まれています。こんにちはリンク:hereなどです。これにより、Javascriptは、評価を行う際に終わりのない文字列リテラルエラーをスローします。 –

0

ちょうど直接文字にユニコードリテラルを変換:

'H\u0065\u006Clo, world!'.replace(/\u([0-9a-fA-F]{4})/, function() {
        return String.fromCharCode(parseInt(arguments[1],16)); 見つけ、HTMLエンティティとUnicode文字を置き換えるために正規表現を使用
});

関連する問題