2012-04-03 130 views
0

我有csv文件,java應用程序和數據庫,我從我的java應用程序讀取csv文件, 經過一些操作後,我一個接一個地插入文件到數據庫中,但是沒有插入像ŠĐŽĆČ這樣的字符正確。我將數據庫設置爲utf-8默認排序。我知道,通過測試,當我用ANSI編碼設置文件時,一切正常(ŠĐŽĆČ已正確插入數據庫),但編碼時UTF-8字符未正確插入。問題是我必須插入到DB中的文件必須以UTF-8編碼。 你能幫我解決這個問題嗎?插入文件到數據庫

回答

0

難以得到具體的沒有更多的細節,但有一對夫婦的事情,涌現在腦海裏:

1)如果我理解正確的話,你說你的CSV是UTF8?你是否證實了這個假設是正確的?在相關說明中,假設您認爲它是UTF-8,那麼如何將該文件加載到Java中?

請注意,Java的文件讀取器使用系統的默認字符編碼。這不一定是UTF-8,你可以檢查你是否打印System.getProperty("file.encoding");

我傾向於不依賴於這一點,並加載根據已知的編碼如下:

FileInputStream fis = new FileInputStream("myfile.txt"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-8")); 
... 

2)數據庫覈對是指定的字符集不同。 (注意,如果你還提到了你的數據庫客戶端,這將是很方便的)。整理涉及文本的排序/排序。您通常需要指定字符集。如何做到這一點取決於你的數據庫。

+0

1.我的CSV-s採用UTF-8格式,我用標準方式加載文件:File f = new File(「C:\\ ...」),比while循環中的每一行都要好。之後,我在MySql DB(JDBC驅動程序)中插入文件。 2.我在http://dev.mysql.com/doc/refman/5.0/en/charset-database.html上說:「如果在沒有CHARACTER SET的情況下指定COLLATE Y,則與Y和歸類Y相關的字符集是使用「,所以如果我設置UTF-8默認排序規則,比字符集將是UTF-8。 – sekulicd 2012-04-04 08:26:35

+0

雖然File對象不是讀者,但這正是我渴望發現的。我已經更新了我的答案,以顯示它是如何爲utf-8完成的。 – arooaroo 2012-04-10 17:55:23

+0

我意識到這一點,但無論如何謝謝你。 – sekulicd 2012-04-10 19:07:02