/*from:http://blog.joycode.com/hopeq/archive/2005/09/26/64146.aspx*/
有一個web項目,web.config中requestencoding和responseencoding都是gb2312,而從數據庫中取出的簡介數據可能是中文和韓、日文混合的內容,這時候如果直接輸出到頁面上,其頁面會出現亂碼,其中的韓文內容無法正確顯示。當然如果項目的編碼都使用utf-8的話將沒有這個問題,但這個項目是一個老項目,為了盡量不要影響已有的程序,所以無法將編碼改為utf-8,只能在本頁面上動腦筋。
經過研究,發現這個問題可以通過html實體的方法解決。
對于html實體請參考:
character entity references in html 4
測試代碼:
byte[] bcomments = encoding.utf8.getbytes("一ンブル????中文");
char[] ccomments = encoding.utf8.getchars(bcomments);
stringbuilder charbuilder = new stringbuilder();
foreach(char c in ccomments)
{
if(c > '/u0800')
{
charbuilder.append("&#");
charbuilder.append((int)c);
}
else
{
charbuilder.append(c);
}
}
response.write(charbuilder.tostring());
這段代碼的作用是將所有的中文、韓文、日文字符通過硬編碼輸出成為html實體。而html實體是不受responseencoding和頁面編碼集影響的。
說明:
/u0800 以上的為中、韓、日字符。
中文的范圍:/u4e00 - /u9fa5,日文在/u0800 - /u4e00,韓文為/u9fa5以上。
這個方法僅僅是為了解決小范圍問題,如果各位有更好的辦法請指教。
新聞熱點
疑難解答