2013-06-05 73 views
0

對於數據庫,我是初學者,請耐心等待。我試圖建立一個數據庫,並從文件tables.sql中導入一些表。一些tables.sql列的有瑞典字母它們(A,O),問題是,我得到如下:字符集和數據庫中的排序規則

△=澶
O =ö

首先我開始檢查服務器的字符集:

mysql>顯示像'character_set_server'這樣的變量;

服務器被配置爲字符集'Latin-1'。我必須提到,我無法控制服務器而不是創建數據庫。所以我想我必須創建我的數據庫並指定數據庫的字符集。

這是我如何着手:

的mysql> CREATE DATABASE分貝;

mysql> alter database db character set utf8 collat​​e utf8_swedish_ci;

我仔細檢查了我的tables.sql有字符集UTF-8通過執行:

文件-bi allsok_tables.sql

然後我把它加載到數據庫的:

$的MySQL -u [用戶名] -h [主機名] -P [端口] -p分貝< tables.sql

當我在tables.sql中創建我的表我使用engine = InnoDB(不知道這是否相關)。但是,如果我現在選擇了從表TableTest

的mysql> SELECT * FROM TableTest

我得到這些奇怪的字符,而不是瑞典字符。我很感激現在的任何幫助。

在此先感謝!

UPDATE:

如果我手動插入值到一個表中它的工作原理例如

mysql> insert into TableTest values('åäö');

所以這個問題似乎與.sql文件。對?

回答

1
$ mysql ... --default-character-set=utf8 < tables.sql 
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

MySQL需要知道你發送它是在對數據進行編碼。要做到這一點,你需要設置連接編碼。從客戶端連接到MySQL時,通常運行SET NAMES查詢或在您選擇的API上使用等效的調用來完成此操作。在命令行上,--default-character-set選項執行此操作。它需要設置爲您的文件所在的任何編碼。

+0

非常感謝! – DoubleTrouble

相關問題