2013-06-05 80 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

相关问题