我的 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 我不知道