/*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以上。
这个方法仅仅是为了解决小范围问题,如果各位有更好的办法请指教。
新闻热点
疑难解答