我是数据库的初学者,所以请耐心等待。我正在尝试设置数据库并从文件tables.sql导入一些表。 tables.sql中的一些列中包含瑞典字母(Ä,Ö),问题是我得到以下内容:
Ä=ä
Ö=ö
首先我开始检查服务器的字符集:
的MySQL>显示'character_set_server';
等变量
服务器配置为字符集'Latin-1'。我必须提到,除了创建数据库之外,我无法控制服务器。所以我想我必须创建我的数据库并指定数据库的字符集。
这就是我的工作方式:
的MySQL>创建数据库db;
的MySQL> alter database db character set utf8 collate utf8_swedish_ci;
我通过执行:
仔细检查了我的tables.sql是否有charset utf-8file -bi allsok_tables.sql
然后我通过以下方式将其加载到数据库中:
$ mysql -u [username] -h [hostname] -P [port] -p db< tables.sql
当我在tables.sql中创建表时,我使用engine = InnoDB(不知道这是否相关)。但是,如果我现在从TableTest表中选择所有内容
的MySQL>从TableTest中选择*
我得到这些奇怪的字符而不是瑞典字符。我现在感谢任何帮助。
提前致谢!
更新:
如果我手动将值插入表中,则可以使用,例如
的MySQL>插入TableTest值('åäö');
所以问题似乎与.sql文件有关。正确?
答案 0 :(得分:1)
$ mysql ... --default-character-set=utf8 < tables.sql
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MySQL需要知道您要发送的数据的编码方式。为此,您需要设置连接编码。从客户端连接到MySQL时,通常会运行SET NAMES
查询或在您选择的API上使用等效调用来执行此操作。在命令行上,--default-character-set
选项执行此操作。它需要设置为您的文件所在的编码。