0

我是数据库的初学者,所以请多多包涵。我正在尝试建立一个数据库并从文件tables.sql 中导入一些表。tables.sql 中的某些列中有瑞典字母(Ä,Ö),问题是我得到以下信息:

Ä = ä
Ö = ö

首先我开始检查服务器的字符集:

mysql> 显示像“character_set_server”这样的变量;

服务器配置为字符集“Latin-1”。我必须提到,除了创建数据库之外,我无法控制服务器。所以我想我必须创建我的数据库并指定数据库的字符集。

这就是我进行的方式:

mysql> 创建数据库数据库;

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 db < tables.sql

当我在 tables.sql 中创建表时,我使用 engine = InnoDB (不知道这是否相关)。但是,如果我现在从表 TableTest 中选择所有内容

mysql> 从 TableTest 中选择 *

我得到这些奇怪的字符而不是瑞典字符。我现在很感激任何帮助。

提前致谢!

更新:

如果我手动将一个值插入到表中,它可以工作,例如

mysql> 插入 TableTest 值('åäö');

所以问题似乎出在 .sql 文件上。正确的?

4

1 回答 1

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

MySQL 需要知道您发送的数据的编码是什么。为此,您需要设置连接编码。从客户端连接到 MySQL 时,您通常会运行SET NAMES查询或在您选择的 API 上使用等效调用来执行此操作。在命令行上,该--default-character-set选项执行此操作。它需要设置为您的文件所在的任何编码。

于 2013-06-05T10:12:38.227 回答