gpt4 book ai didi

Mysql在某些情况下无法保存UTF字符串

转载 作者:行者123 更新时间:2023-11-29 13:56:26 24 4
gpt4 key购买 nike

在打击垃圾评论的过程中,我发现一些垃圾评论没有任何内容存储...

在尝试隔离问题后,以下是我在将类似注释与 MySQL 数据库一起保存到文件后发现的内容...

这是(十六进制,因为未知的输入编码)注释前几个“字符”的样子:

D1EA E0F7 E0F2 FC20 EFEE EFF3 EBFF F0ED FBE5 20EF F0EE E3F0 E0EC ECFB

执行INSERT INTO测试值后 (0xD1EAE0F7E0F2FC20EFEEEFF3EFFFF0EDFBE520EFF0EEE3F0E0ECECFB21),(0x21D1EAE0F7E0F2FC20EFEEEFF3EBFFF0EDFBE520EFF0EEE3F0E0ECECFB), (0x2 1)测试mysql表(utf-8)包含3行,第一行没有任何文本,第二行和第三行有单个字符“!”作为文本...(请注意,“!”的 21 十六进制代码也位于第一个条目的末尾,但未保存)。 (latin1 编码为每个字节保存了一些无用的文本替换,但这篇文章不是关于它的)

当然,D1EA(D=1101 0001 后面应该跟一个 10xxxxxx 字节,而不是 1110xxxx)不是有效的 UTF-8 字符,但是像数据库服务器这样强大的系统应该能够处理它...

我的猜测是,Mysql(版本 5.1.66-0+squeeze1)不应该选择何时保存数据以及何时不保存数据,即使它不是有效的 UTF-8 编码字符......或者至少,它应该当决定不存储数据时,不声明查询成功!

是mysql的bug还是什么?

谢谢

最佳答案

编码为Windows-1251,解码为

Скачать популярные программы
//"Download popular software" google translated

在对其进行任何操作之前,您应该拒绝代码中的非 UTF8 输入。

if( !mb_check_encoding($input, "UTF-8") ) {
header("HTTP/1.1 400 Bad Request");
die("Invalid encoding");
}

FTR,您的查询是十六进制文字,而不是错误编码的文本。

关于Mysql在某些情况下无法保存UTF字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com