我有一个包含瑞典语/挪威语字符串的数据库表.

当我查询一些数据时,我得到如下输出:

Output with set names latin1;

+-----------------------------------+
| name                              |
+-----------------------------------+
| Kid Interi#####                   | 
| Bwg Homes                         | 
| If Skadef####kring                | 
| Jangaard Export                   | 
| Nordisk Film                      | 
+-----------------------------------+

现在,如果我需要查看字符的正确编码,那么MySQL命令行的表格输出的格式就会中断.

Output with set names utf8;

+-----------------------------------+
| name                              |
+-----------------------------------+
| Kid Interiør                     | 
| Bwg Homes                         | 
| If Skadeförsäkring              | 
| Jangaard Export                   | 
| Nordisk Film                      | 
+-----------------------------------+

问题:

这不是一个大问题,但它使输出更难阅读.有人知道如何保持表格格式不变吗?

推荐答案

简短回答

使用选项--default-character-set=utf8启动客户端:

mysql --default-character-set=utf8

您可以在/etc/mysql/my.cnf文件中将其设置为默认值.

[mysql]
default-character-set=utf8

简短的回答不起作用,如下所示

上面的命令强制将character_set_clientcharacter_set_connectioncharacter_set_results配置变量设置为utf8.

为了判断所有与字符集相关的配置变量的值,可以运行:

show variables like '%char%';

character_set_database给出了当前数据库(模式)的字符集.模式和表默认使用character_set_server中指定的字符集创建,除非在CREATE语句中显式指定.

可以在my.cnf文件中更改character_set_server:

[mysqld]
character-set-server = utf8

此外,表和列可以有自己的字符集,这可能不同于它们的父表或模式.要具体判断数据库中每个表和列的值,请参见以下答案:

如果要更改现有表和列的字符集,请参阅以下答案:How to convert an entire MySQL database characterset and collation to UTF-8?

有关mysql docsumentation中连接字符集的更多信息.

一切都设置为utf8,但我仍然看到奇怪的字符

即使所有字符集变量、表格和列都设置为utf8,也可能会在屏幕上看到奇怪的字符.例如,有人可能通过latin1连接的客户端(例如通过运行mysql --default-character-set=latin1)在utf8列中写入Unicode字符.在这种情况下,需要使用与写入值相同的字符集连接到数据库.您还可以通过正确的编码检索和重写它们.

NOTE:正如 comments 所指出的,mysql utf8编码并不是UTF-8的真正完整实现.如果需要全面实现UTF-8,可以使用utf8mb4字符集:

mysql --default-character-set=utf8mb4

更多信息请点击这里:What is the difference between utf8mb4 and utf8 charsets in MySQL?

Mysql相关问答推荐

如何获得表中只有最大值行的一个列被另一个列分区?

可以在MySQL表名中使用表情包吗?

如果我有USER列,如何将SQL CREATE TABLE与PostgreSQL和MySQL一起使用?

如何将左联接的小计/总计行中的所有列作废

Ballerina SQL 中是否也应该考虑输入清理?

获取连续11天未考勤的员工

我是否需要在 N+1 列上建立索引,才能有效地在 N 列上执行 SELECT,并按其他列排序?

如何用sql找出两次之间的差异

我在连接到 mysql 的 node js 中收到错误消息发送到客户端后无法设置标头

使用 SELECT 时应锁定多少行 .. FOR UPDATE LIMIT 1

当mysql中只有一个索引列时,为什么使用范围条件锁定读取会锁定每条记录?

从多到多表中 Select 数据而无需重复

总行大小不超过 65535,但我得到行大小太大.所用表类型的最大行大小,不包括 BLOB,是 65535错误

将 wordpress 自定义字段转换为单个数组

在 MySQL 中转换 JSON 数组值

具有别名主机的 ssh 反向 mysql tunel

是否可以从 .SQL 文件中计算表中的行数?

MySQL使用多列 Select 重复记录

用于国际和多语言目的的数据库建模

mysql 按日期 Select 总和组