首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MariaDB的utf8mb4错误

使用MariaDB的utf8mb4错误
EN

Stack Overflow用户
提问于 2021-06-22 11:01:14
回答 2查看 526关注 0票数 2

我正在尝试使用utf8mb4字符集和utf8mb4_unicode_ci排序规则创建一个数据库。但是,我似乎无法将unicode字符插入到表中。

我所做的:

代码语言:javascript
复制
SET NAMES utf8mb4;
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE mydb;
CREATE TABLE test (val VARCHAR(16));
INSERT INTO test (val) VALUES ("á");

ERROR 1366 (22007): Incorrect string value: '\xA0' for column `mydb`.`test`.`val` at row 1

如果我不使用SET NAMES utf8mb4;,那么我可以在没有问题的情况下插入"á"字符。

这些是我的默认字符集变量:

代码语言:javascript
复制
show variables like 'char%'; show variables like 'collation%';
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | cp850                                         |
| character_set_connection | cp850                                         |
| character_set_database   | utf8mb4                                       |
| character_set_filesystem | binary                                        |
| character_set_results    | cp850                                         |
| character_set_server     | utf8                                          |
| character_set_system     | utf8                                          |
| character_sets_dir       | C:\Program Files\MariaDB 10.5\share\charsets\ |
+--------------------------+-----------------------------------------------+
8 rows in set (0.000 sec)

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | cp850_general_ci   |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8_general_ci    |
+----------------------+--------------------+
3 rows in set (0.000 sec)

在使用SET NAMES之后

代码语言:javascript
复制
show variables like 'char%'; show variables like 'collation%';
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | utf8mb4                                       |
| character_set_connection | utf8mb4                                       |
| character_set_database   | utf8mb4                                       |
| character_set_filesystem | binary                                        |
| character_set_results    | utf8mb4                                       |
| character_set_server     | utf8                                          |
| character_set_system     | utf8                                          |
| character_sets_dir       | C:\Program Files\MariaDB 10.5\share\charsets\ |
+--------------------------+-----------------------------------------------+
8 rows in set (0.000 sec)

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8_general_ci    |
+----------------------+--------------------+
3 rows in set (0.000 sec)

如何解决此问题,以便在utf8mb4字符集中插入字符?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-22 11:18:04

文本(或.sql)文件本身是用cp850编码的,而不是在utf-8中编码的。

您可以看到编码值是单个字节- UTF-8编码应该至少为2字节。

为了使用SET NAMES utf8mb4;命令,需要将文件转换为utf-8。一些高级编辑器允许这样做,甚至windows记事本也可以在现代版本中将文本文件保存为utf-8。

票数 1
EN

Stack Overflow用户

发布于 2021-10-28 23:09:22

如果您使用的是cmd,命令"chcp“控制”代码页“。chcp 65001提供了utf8,但它也需要安装一个特殊的字符集。要在控制台窗口中设置字体:右键单击窗口的标题→属性→字体→选择Lucida控制台

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68082339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档