Linux下Java寫文件ANSI_X3.4-1968的問題

這個問題困擾了我們很久,就是在Linux下,我們通過網頁執行用Java寫的小工具時,發現,在終端可以正確執行,而用網頁執行卻不能正確執行!中文總是出現亂碼。

通過輸出文件的編碼,發現文件的格式都是:ANSI_X3.4-1968。這很明顯不對,正常的應該是UTF-8 。

一開始,我們都以爲是Java編碼出了錯,但是,爲什麼終端執行正確,而網頁執行卻是錯的呢?

很明顯,能過了Apache這個中介才發生了錯誤。於是猛地搜這個apache jvm ANSI_X3.4-1968,找到了這篇文章 :http://stackoverflow.com/questions/4398540/unicodeencodeerror-when-saving-imagefield-containing-non-ascii-characters-in-dja

在apache啓動的時候,apache的整個運行環境並沒有設置爲 LANG="en_US.UTF-8" ,

所以,我在apache的啓動函數(/etc/init.d/httpd文件或者是/etc/init.d/apache2/envvars文件)裏面加了

1 start() 
2 {
3      export LC_ALL='en_US.UTF-8' #...省略n萬行原來的代碼 
4 }

 

仔細想想,這個問題和我之前遇到的Git不能提交的問題有點像。因爲更改了apache的默認運行用戶,導致git用戶無法讀取自己的.config文件,所以提交不了。

同樣,這樣也可能是git用戶無法讀取自己的.bashprofile文件,所以,即使我們如何設置.bashprofile裏面的編碼,都無法改變apache的運行環境。

同樣的做法,在系統運行的時候動態地添加這些環境變量。問題得到暫時的解決...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章