gpt4 book ai didi

mysql - ER_TRUNCATED_WRONG_VALUE_FOR_FIELD 将一些字符串保存到 mysql

转载 作者:行者123 更新时间:2023-11-29 03:49:12 24 4
gpt4 key购买 nike

我正在使用 node.js,node-mysql npm 模块,在 mysql 中有一个 utf8 列(sql_mode=STRICT_ALL_TABLES),并且可以存储“常规”utf8通常是字符,但对于某些输入,它会抛出这个:

AssertionError:错误:ER_TRUNCATED_WRONG_VALUE_FOR_FIELD:不正确的字符串值:'\xF3\xA5\xB5\xA5\xEF\xBF...'

我想这是由于一些字符在 utf8 之外。我知道可以在 mysql 中使用 utf8mb 字符集,但在这种情况下我不关心这些字符,只想从字符串中删除它们而不是更改 mysql 配置。

是否可以使用 node.js 删除此类字符?

最佳答案

RFC here具有 unicode 字符代码列表及其占用的字符数:

   Char. number range  |        UTF-8 octet sequence
(hexadecimal) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

虽然我提供的错误消息没有显示任何宽字符:

node -e 'console.log("\xF3\xA5\xB5\xA5\xEF\xBF")'
ó¥µ¥ï¿

this页面显示所有这些字符都是 2 字节字符,我仍然尝试使用 .replace(/[\u0800-\uFFFF]/g, '') 从我的字符串中删除宽字符(3 个或更多八位字节) ,它成功了!

关于mysql - ER_TRUNCATED_WRONG_VALUE_FOR_FIELD 将一些字符串保存到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698871/

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