不少用戶都遇到中文亂碼這個(gè)問題的困擾,其實(shí)字符編碼的問題,確實(shí)是個(gè)很繁瑣的問題戳稽,我就將自己知道的一丁點(diǎn)內(nèi)容跟大家分享一下,拋磚引玉。
java應(yīng)用日志中文亂碼問題
這個(gè)問題是由于BAE使用的java JVM內(nèi)核不支持中文導(dǎo)致的惊奇,需要配置下jvm.ini文件互躬。
這里配置jvm.ini的時(shí)候可能會(huì)遇到這樣一個(gè)問題:報(bào)錯(cuò)#Error: Could not find or load main class ???-Xms=64m;windows下的文本編輯器會(huì)在utf-8的文件開頭添加“0xEF,0xBB,0xBF”三個(gè)字節(jié)颂郎『鸲桑可以嘗試用別的編輯器新建一個(gè)文件,而不是在原來的文件上修改乓序。也有的朋友嘗試在eclipse用GBK編碼編寫了jvm.ini就通過了寺酪。
如何配置?
按照官網(wǎng)給出的教程:
http://bce.baidu.com/doc/BAE/Java.html#.E9.85.8D.E7.BD.AEJVM.E5.8F.82.E6.95.B0
在ROOT.war同級(jí)的目錄下創(chuàng)建.bae文件夾替劈,里面創(chuàng)建jvm.ini文件寄雀。
-Xms64m
-Xmx256m
-XX:PermSize=32m
-XX:MaxPermSize=128m
-Dfile.encoding=UTF-8
另外,配置完這個(gè)之后陨献,還要保證你的程序編碼也是utf-8盒犹。
這樣之前stdout日志中輸出的中文亂碼就成功顯示了。
servlet應(yīng)用頁面上的中文亂碼
順便說一嘴眨业,servlet應(yīng)用頁面上的中文亂碼問題怎么解決急膀?
得在程序中添加兩句話:
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type","text/html;charset=UTF-8");
最后在瀏覽器中顯示:
這是為什么呢?
這是因?yàn)槟愠绦蛴肬TF-8編碼坛猪,而瀏覽器用GB2312解碼脖阵,因此會(huì)出現(xiàn)亂碼;
來看一下流程圖墅茉,對(duì)這個(gè)問題就清晰了:
response.setContentType("text/html;charset=UTF-8");
目的是為了控制瀏覽器的行為命黔,即控制瀏覽器用UTF-8進(jìn)行解碼;
response.setCharacterEncoding("UTF-8");
因?yàn)檫@句話的意思是為了將response對(duì)象中的數(shù)據(jù)以UTF-8解碼后發(fā)向?yàn)g覽器就斤。
也就是剛才的流程圖就是這樣:
參考博客:http://blog.csdn.net/xiazdong/article/details/7217022
這就是java頁面和日志中中文亂碼怎么解決的問題悍募。
nodejs應(yīng)用控制臺(tái)輸出中文亂碼問題
剛才講了java應(yīng)用中文亂碼的問題,現(xiàn)在說一下nodejs應(yīng)用洋机,其實(shí)更簡單:
在server.js中設(shè)置:
res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
同時(shí)保證server.js的格式也得為utf-8: