2009-06-19 55 views
1

我想通過AJAX調用從服務器獲取一些數據,然後使用responseDiv.innerHTML顯示結果。來自服務器的數據部分用Unicode元素編碼,如:za \ u010Dat測試。通過設置響應div的innerHTML,這只是按原樣顯示。也就是說,Unicode不會在瀏覽器中轉換爲實際的表示形式。通過AJAX/innerHTML顯示部分Unicode編碼的數據

包含頁面的字符集設置爲UTF-8。我嘗試了大多數其他的東西,比如將unicode表示轉換爲HTML實體,但這似乎也不起作用。

我還應該提到來自服務器的文本也有HTML標記混合在一起。 HTML標籤是應該遵守的。例如,如果來自服務器的文本爲<b>Bold this!</b>,則文本爲粗體。

任何幫助表示讚賞。

維克拉姆

回答

0

你能代替 '\ u010D' 與 '&#x010D;'?

如果您正在設置innerHTML,AFAIK來自服務器的HTML標籤應該可以正常工作。 BTW

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

- 您可以使用像小提琴手或Firebug的,以確保你得到你從服務器的期望:

這對我的作品。

更新:使用正則表達式查找和使用HTML實體替換Unicode字符:

$.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

嗯..文本存儲在數據庫中,我可能會運行一個Unicode到HTMLEntity轉換器,然後再發送到服務器。有沒有辦法只改變客戶端的Unicode部分? – 2009-06-19 06:11:03

0

就直接Unicode的文字轉換成字符:

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