标签: utf8mb4

MySQL中的utf8mb4和utf8字符集有什么区别?

MySQL中utf8mb4utf8charsets有什么区别?

我已经知道ASCII,UTF-8,UTF-16UTF-32编码; 但我很想知道utf8mb4编码组与MySQL服务器中定义的其他编码类型的区别.

是否有任何特殊利益/建议使用utf8mb4而不是utf8

mysql encoding utf-8 character-encoding utf8mb4

294
推荐指数
5
解决办法
16万
查看次数

尝试通过JDBC将UTF-8插入MySQL时,"字符串值不正确"?

这是我的连接设置方式:
Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password);

当tyring为表添加一行时,我收到以下错误:
Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...' for column 'content' at row 1

我正在插入数千条记录,当文本包含\ xF0时,我总是会收到此错误(即错误的字符串值始终以\ xF0开头).

该列的排序规则为utf8_general_ci.

可能是什么问题呢?

mysql jdbc utf-8 utf8mb4

201
推荐指数
9
解决办法
30万
查看次数

MySQL utf8mb4,保存Emojis时出错

我尝试从MySQL数据库中的服务中保存用户的名称.这些名字可以包含表情符号(仅举例)

搜索了一下后,我发现这个stackoverflow链接到本教程.我按照步骤操作,看起来一切都配置正确.

我有一个数据库(charset和collat​​ion设置为utf8mb4(_unicode_ci)),一个名为TestTable的表,也是这样配置的,以及一个"Text"列,以这种方式配置(VARCHAR(191)utf8mb4_unicode_ci).

当我尝试保存表情符号时,我收到一个错误:

Example of error for shortcake ():
    Warning: #1300 Invalid utf8 character string: 'F09F8D'
    Warning: #1366 Incorrect string value: '\xF0\x9F\x8D\xB0' for column 'Text' at row 1
Run Code Online (Sandbox Code Playgroud)

我能够正确保存的唯一表情符号是太阳☀️

虽然我没有尝试所有这些都是诚实的.

我在配置中缺少什么?

请注意:所有保存测试都不涉及客户端.我使用phpmyadmin手动更改值并保存数据.因此,服务器正确保存emojis 之后,我将负责正确配置客户端.

另一个旁注:目前,在保存表情符号时,我或者得到上面的错误,或者没有错误,数据Username 将被存储为Username ????.错误或无错误取决于我保存的方式.当通过SQL语句创建/保存时我用问号保存,当编辑内联时我用问号保存,当使用编辑按钮进行编辑时,我得到错误.

谢谢

编辑1: 好吧所以我认为我发现了问题,但不是解决方案.看起来数据库特定变量没有正确更改.

当我在我的服务器上以root用户身份登录并读出变量(全局)时:
使用的查询:SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4 …
Run Code Online (Sandbox Code Playgroud)

mysql emoji utf8mb4

68
推荐指数
3
解决办法
3万
查看次数

如何在mysql中插入utf-8 mb4字符(表情符号在ios5中)?

我使用的是mysql 5.5.10,它的character_sets是

| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8mb4_general_ci         |
| collation_database       | utf8mb4_general_ci         |
| collation_server         | utf8mb4_general_ci         |
Run Code Online (Sandbox Code Playgroud)

我从utf8为iOS5的表情符号改变了utf8mb4.它们由4byte代码表示.

但当我插入3个笑脸表情符号时,'???' 在mysql中.

它们是3F 3F 3F(Hex).

我可以很好地存储iOS4的表情符号,但不能存储iOS5的表情符号.

我怎么能存储iOS5的表情符号?

请帮我.

mysql iphone ios5 utf8mb4

56
推荐指数
2
解决办法
8万
查看次数

ERROR 1115(42000):未知字符集:'utf8mb4'

我有一个MySQL转储,我试图恢复:

mysql -u"username" -p"password" --host="127.0.0.1" mysql_db < mysql_db
Run Code Online (Sandbox Code Playgroud)

但是,这引发了一个错误:

ERROR 1115 (42000) at line 3231: Unknown character set: 'utf8mb4'
Run Code Online (Sandbox Code Playgroud)

这是第3231-3233行:

/*!50003 SET character_set_client  = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;
Run Code Online (Sandbox Code Playgroud)

我正在使用MySQL 5.1.69.我该如何解决这个错误?

mysql sql character-encoding utf8mb4

51
推荐指数
3
解决办法
21万
查看次数

MySQL VARCHAR(255)UTF8对于密钥太长,但最大长度为1000字节

我知道有很多关于此的问题,但我认为我的数学是正确的.

  • MySQL为每个UTF8字符保留3个字节.
  • MyISAM允许长度为1000字节的密钥.
  • 我的UTF8 VARCHAR(255)应该255 * 3 = 765字节

除非UNQUE每个条目需要额外的200多个字节,为什么这不起作用?

mysql> ALTER TABLE entry ADD UNIQUE INDEX (name(255));
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
Run Code Online (Sandbox Code Playgroud)

我能做些什么吗?

编辑:

事实证明,限制是250.对于唯一索引,字符似乎计为4个字节,但我不知道为什么.

编辑2:

感谢Vladislav Vaintroub,charset确实是utf8mb4.这解决了这个谜.我没有看到有关此更改的任何文档.

我猜它通过隐式截断字段来构建非唯一索引,这对于唯一索引是不可接受的,所以它拒绝.

如果您重新输入您的评论作为答案,我很乐意接受.

解决方案:指定utf8,而不是utf8mb4(MySQL Admin不允许这样做,因此请手动创建表)

mysql utf8mb4

42
推荐指数
3
解决办法
5万
查看次数

MySQL抛出错误的字符串值错误

我正在尝试将以下推文存储到longtext列/ utf8 charset/MySQL 5.5中.带有MyISAM存储的数据库.

我们也尝试过utf8mb4,utf16,utf32字符集,但无法解决这个问题.

tweet="@Dorable_Dimples: Okay enough of those #IfYouWereMines I'm getting dep
ressed. #foreveralone ?" lol yes

mysql> ALTER DATABASE foo CHARACTER SET utf8 COLLATE utf8_bin;

mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.5.12.R1/share/charsets/ | …
Run Code Online (Sandbox Code Playgroud)

mysql hibernate utf-8 utf8mb4

36
推荐指数
4
解决办法
4万
查看次数

Utf8_general_ci或utf8mb4还是......?

utf16或utf32?我正在尝试以多种语言存储内容.某些语言使用双宽字体(例如,日语字体通常是英文字体的两倍).我不确定我应该使用哪种数据库.有关这四个字符集之间差异的任何信息......

localization utf-8 utf-16 utf-32 utf8mb4

28
推荐指数
1
解决办法
3万
查看次数

php可以检测4字节编码的utf8字符吗?

我在mysql 5.1服务器中使用utf8 charset mysql表,它不支持表中的utf8mb4编码.插入4字节编码的utf8字符时"","","","","","?","".该表将弹出错误或跳过以下文本.

如何以编程方式检测PHP中的4字节编码的utf8字符并替换它们?

php utf8mb4

18
推荐指数
2
解决办法
8823
查看次数

如何使用utf8mb4在MySQL中搜索表情符号?

请帮助我理解在MySQL utf8mb4字段中如何处理像emoji这样的多字节字符.

请参阅下面的简单测试SQL来说明挑战.

/* Clear Previous Test */
DROP TABLE IF EXISTS `emoji_test`;
DROP TABLE IF EXISTS `emoji_test_with_unique_key`;

/* Build Schema */
CREATE TABLE `emoji_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `string` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `status` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `emoji_test_with_unique_key` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `string` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `status` tinyint(1) NOT NULL DEFAULT …
Run Code Online (Sandbox Code Playgroud)

mysql sql emoji utf8mb4

16
推荐指数
1
解决办法
3624
查看次数