【问题标题】:Character set and collation in database数据库中的字符集和排序规则
【发布时间】:2013-05-31 22:03:29
【问题描述】:

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

Ä = ä
Ö=ö

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

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

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

我是这样进行的:

mysql> 创建数据库db;

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

我通过执行仔细检查了我的 tables.sql 有 charset utf-8:

文件-bi allsok_tables.sql

然后我通过以下方式将其加载到数据库中:

$ mysql -u [用户名] -h [主机名] -P [端口] -p db

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

mysql> select * from TableTest

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

提前致谢!

更新:

如果我手动将一个值插入到表中,它会起作用,例如

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

所以问题似乎出在 .sql 文件上。对吧?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    $ mysql ... --default-character-set=utf8 < tables.sql
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 2018-01-14
      • 2018-03-20
      • 1970-01-01
      • 2012-10-26
      • 2018-06-08
      • 2012-01-02
      相关资源
      最近更新 更多