最近在調試Linux下的中文編碼的時候發現一個很奇怪的問題。Linux的Locale設置是:
LANG=zh_CN.GB18030
LC_ALL=zh_CN.GB18030Tomcat的server.xml的URIEncoding設置為ISO-8859-1。1.如果我將Tomcat設置為自動啟動。那麼一開始Linux啟動之後我這樣獲取從URL傳過來的中文參數的時候會出現亂碼:String Sname = new String(request.getParameter("name").getBytes("iso-8859-1"),"gb2312");這個時候,我再不做任何修改的情況下將Tomcat重啟,然後做上面同樣的工作,亂碼就沒了。而且如此屢試不爽。2.如果我取消Tomcat的自動啟動,在Linux啟動之後,手動啟動Tomcat,用上面的方法獲取參數不會有亂碼。所以我猜測,是不是Tomcat自動啟動是在Linux的Locale環境變量生效前執行了?勞煩罎子里的前輩指點一二。不盡感激。