如何在 mysql 提示符或 SQL 中引用 unicode 字符?

如何在 mysql 提示符或 SQL 中引用 unicode 字符?

我的 mysql 数据库中有一个奇怪的 unicode 字符

该值看起来像这样

card issuer bank didn<U+0092>t approve your payment

因此,应该表示撇号的符号是一个奇怪的 unicode 字符,大概是来自 Windows

我想替换它,但不知道如何在 SQL 中引用它

尝试了以下方法,无效:

替换(文本,转换(0x0092 为字符集 utf8),'x')

0x0092

0x000x92

'\U+0092'

'0x0092'

以及许多其他组合,但都不起作用

有任何想法吗?

答案1

这一页似乎非常接近您要查找的内容,尽管具体值有所不同;0x0092 是十进制 146,即右智能引号的 Windows 代码。这相当于 UTF-8 中的 0xe28099,正如您在链接中看到的那样 :)

总之:

此代码应同时与 Windows-1252 字符集和 UTF-8 一起运行,UTF-8 是一种具有扩展字符集的编码,已成为电子邮件和网站的首选编码。

UPDATE `t` SET `c` = REPLACE(`c`, 0xE28098, "'");
UPDATE `t` SET `c` = REPLACE(`c`, 0xE28099, "'");
UPDATE `t` SET `c` = REPLACE(`c`, 0xE2809C, '"');
UPDATE `t` SET `c` = REPLACE(`c`, 0xE2809D, '"');

...等等。

答案2

为什么不直接强行得到你想要的东西呢?

更新设置 = “发卡银行不批准您的付款”其中 =;

如果其中有很多存在同样的问题,也许可以将其困在代码中的插入处?

如果仍然不可能,请尝试对列的整个值执行 convert() 函数。

转换(使用 utf8)

答案3

我已经通过十六进制编辑器运行了选择结果,以弄清楚到底出现了什么,结果发现实际上是 0xc292,就像描述的一样这里

为什么 Linux 会将其显示为 U+0092 我不知道

相关内容