2012-06-17 33 views
0

我已經搜索了一段時間,但似乎沒有足夠的相關性。英鎊的標誌保存爲我的SQL數據庫中的問號

基本上,我有一個從程序中提取的csv文件。我編寫了一個快速的Python程序,將csv文件轉換爲一個sql文件,以便將其導入到數據庫中。然後,我使用windows命令提示符將.sql文件導入到遠程MySQL服務器。

我在我的數據庫的一些字段中有一些英鎊符號(£)。在csv文件中,它們顯示爲£,在生成的sql文件中(轉換後),由於使用了re.escape,它們顯示爲\£ - 我實際上認爲這可能是原因(Python代碼在csvReader爲行 :此寫入到文件中。 ...其他的東西... sqlfile.write(re.escape(行[6]))的文件導入

後,我查看錶格和英鎊符號現在在表格中顯示爲?,並且當網站上顯示的內容使用php進行查詢時 數據庫服務器連接歸類爲utf8_general_ci,並且用此命令連接到遠程服務器: mysql --host = HOST --user = USER --password = PASS --default-character-set = utf8 DATABASENAME < file toimport.sql

更改firefox上的字符編碼沒有任何區別,正如所料 - 無論發生什麼似乎是什麼時候導入了SQL轉儲。

說實話,我並不完全確定我理解整個角色如何設置工作,我從來沒有真的必須嘗試和解決這樣的問題,所以我不知道還有什麼其他的嘗試。在正確的方向上沒有任何幫助,甚至一個點進行搜索,我的搜索,到目前爲止似乎沒有要幫助我:(

謝謝

+1

爲什麼你使用're.escape'來轉義你寫入SQL的東西?'re.escape'是用於轉義正則表達式而不是SQL的東西。 – Amber

+0

有人建議我把它解決一個問題,我試圖在TEXT類型的字段中使用很多字符,「';等等,都是打破它的。 – RachelB

+0

這些字符可能被導入到數據庫更改ectly。試着先確認一下。我想也許它的查看機制(PHP /火狐)仍然在7位ASCII(顯示?的),而不是數據庫。 –

回答

0

使用MySQL的逃生功能MySQLdb的是一樣的東西:。

conn.escape_string() 
+0

謝謝,我已經使用mysqldb(而不是使用mysql命令行界面插入新數據)將所有內容切換到Python,並且有一點小小的擺弄,現在它已經完美顯示了! – RachelB