iT邦幫忙

0

jQuery 讀取中文會出現亂碼…

小弟正在習作 jQuery,遇到了些問題,在此請教各位先進指導,謝謝。

1.練習newsticker這個外掛,外掛網址:
http://www.texotela.co.uk/code/jquery/newsticker/

2.jQuery語法:
$.get(
"ajaxnews.html", {}, function(data){
$("#myajaxnews").append(data).find("ul").newsTicker();
})

3.ajaxnews.html內容:
var newnews = $("<ul>").attr("class", "newsticker");
newnews.append("<li>News Item 1</li>");
newnews.append("<li>News Item 2</li>");
newnews.append("<li>News Item 3</li>");
newnews.append("<li>News Item 4</li>");
newnews.appendTo("#mynews").newsTicker();

□問題:若是將 ajaxnews.html 內容改成中文,就會出現亂碼…
請教應該如何解決?謝謝。

wordsmith iT邦高手 1 級 ‧ 2012-05-03 12:00:20 檢舉
Ajax預設是使用utf-8編碼,如果你的文件是用big5編碼,抓回來就會是亂碼了
fillano iT邦超人 1 級 ‧ 2012-05-04 08:47:51 檢舉
另外,雖然utf8編碼的文字可能會有幾個位元,但是Javascript並不會一個位元一個位元處理,而是把它當作一個char,所以要出亂碼...還不容易。用index去取每個string的char就知道了。

但是有一個問題,目前Javascript實作都還無法支援non BMP的utf8編碼文字,所以碰到就一定出問題。只是不知道有多少中文罕用字會放在BMP之外的字面...

1 個回答

2
i80091
iT邦新手 4 級 ‧ 2012-05-03 14:29:54
最佳解答

由於您只秀出部分程式碼,所以僅就我的經驗提供參考:
1.javascript 預設是處理 UTF-8 內碼,如果你的中文內碼是用 Big5,就可能出現亂碼。
2.請確認您的網頁是用 UTF-8存檔,且在 區段中有設定
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
3.如果要確認網頁存檔的內碼,請用記事本(NotePad),在開啟舊檔時之檔案選擇框的「編碼」欄會顯示目前選到的檔案之編碼,如果出現 ANSI,即表示該檔案是用Big5來存中文! 請開啟後,再用另存新檔,存檔類型選「所有檔案」(不然會自動附加 .txt 副檔名),編碼改選「UTF-8」

如果你的網頁已是 UTF-8編碼,而仍出現亂碼,那就需要進一步檢查了!
(例如:newsTicker這個外掛不支援多位元編碼,因為英文字母在 UTF-8只佔一個位元,而中文則佔3至6個位元)

我要發表回答

立即登入回答