2010-05-04 44 views
3

我們經常面臨需要使用他/她需要翻譯的數據庫中的數據向我們的客戶端發送數據文件的需求。大多數情況下,此導出爲CSV或XLS。 大多數情況下,我們使用phpmyadmin創建一個csv轉儲,並獲取一個xls文件作爲返回的翻譯數據。問題是,大多數時候數據是UTF8,當文件每次我們將數據加載到mysql時,我們每次將數據返回爲xls時,我們最終會遇到utf8問題,字符無法正確顯示等等...在mysql中導出和導入utf8數據:最佳實踐

我們已經將my.conf中的所有內容加倍檢查到列字符集,並且所有內容都正確設置爲UTF8。

我的問題是不是如何解決編碼問題,因爲解決了這個問題,但我們如何在未來處理這種情況時最好地繼續?我們應該交出什麼樣的出口格式?我們應該如何導入(只是mysql加載數據infile或我們自己的處理腳本)。如何處理這種情況的普遍共識是什麼?

我們希望繼續使用excel,因爲這是幾乎所有人都期望的格式,包括我們客戶的翻譯公司。我們客戶的易用性是這裏最重要的因素,每次都不會使我們的重大問題超載。兩全其美:)

回答

1

我目前正在使用的應用程序還包括數據導入功能。數據大部分是用UTF-8編碼的。

我的方法是將導入的CSV(或製表符分隔)(任何編碼)文件預處理爲客戶端腳本(Python)中正確的utf-8編碼臨時CSV文件,並使用LOAD DATA INFILE語句加載文件的內容。

該文件的編碼是通過character_set_database系統變量controled(變量應在服務器級別進行設置),並從MySQL 5.1.17開始可以重寫由字符集LOAD DATA INFILE的子句。

人們應該知道的唯一事情是,MySQL爲每個字符存儲最多3個字節而不是4個(這可能是東方語言的問題)。

要高效導出大量數據,您可以使用SELECT ... INTO OUTFILE聲明。

+0

所以,你真的知道當客戶端返回轉儲時你會得到怎樣的格式和編碼?不幸的是不是這樣的情況:( – ChrisR 2010-05-04 11:18:16

+0

@ChrisRamakers:那麼問題是什麼?你想要一個理解導入文件編碼的自動方式嗎? – newtover 2010-05-04 11:26:34