我有一個java web項目,在windows下運行的好好的,放到linux下卻出現了各類問題。 去看了下數據庫(mysql),發現新插入的中文數據都成了問號亂碼。費解了,個人項目一條龍的全是UTF-8編碼:全部文件的編碼用UTF-8,全部頁面用UTF-8,數據庫UTF-8。亂碼是從哪一個環節來的呢?我用junit測試程序試着向數據庫插了些中文數據,到數據裏全成了問號亂碼,看來是向數據庫插入時出現了亂碼。java
我依然費解,到網上查了很久,看到個和個人麻煩相似的問題,他說在數據庫的連接url上指定一個編碼方式能夠解決問題,好比:jdbc:mysql://localhost:3308/taxdb?characterEncoding=utf-8。可是我不是用這種url的方式去鏈接數據,我是用datasource(com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource的一個實例)的方法一個個指定數據庫的鏈接參數的。後來去查了下datasource看看有沒有能指定編碼的方法,還真發現了一個方法:setCharacterEncoding(Sting chartset)。在代碼里加上:mysql
dataSource.setCharacterEncoding("UTF-8");
再運行項目,果真行了。可是到如今爲止,我還不知道,爲何要這樣作。linux