我也有這樣的問題,我想感謝aditsu的答覆。
我在ubuntu 12.04(和14.04)上的Jetty服務器上使用restlet。 restlet應用程序位於一個充當proxyPass的Apache服務器後面。
所有文件都是UTF-8。
所有HTTP響應都有內容類型文本/ html;字符集= UTF-8。
所有文件包含<元CONTENT = 「text/html的;字符集= UTF-8」 HTTP的當量= 「內容類型」/ >
奇怪的是,當服務器引導和我親臨現場,字符編碼不是UTF-8,所以我得到了所有這些有趣的字符。即使所有信號都告訴服務器和代理以及UTF-8之間的所有內容都使用了de編碼。
當我在服務器啓動後手動重新啓動服務時,所有的字符都沒問題。因爲我無法輕鬆找到答案,並且我不知道是誰造成了這種錯誤編碼,所以我一直手動重新啓動服務。
當時我的候選人是:Apache,Ubuntu服務引導順序,Restlet框架,實際使用的文件編碼,HTTP標頭,HTML元標記。但所有的事情都應該如此。
所以最終它是Jetty,我只是在多次重訪這個問題後才考慮過。
我仍然不知道爲什麼從啓動時開始使字符編碼全部錯誤,並且在手動重新啓動服務之後編碼是正確的。添加額外的JAVA參數'-Dfile.encoding = UTF-8'使它全部消失。感謝aditsu再次分享他的解決方案!
乾杯
編輯: Settting在啓動腳本LANG環境變量也不能解決問題。即
出口LANG =的en_US.UTF-8
實際上這是在系統啓動時開始的碼頭服務器之間的差(LANG沒有定義開箱),並從一個殼啓動它。因此,針對同一問題的兩種解決方案
這隻對JSP頁面有幫助,但... – Noah 2012-07-02 15:20:20