Unicode(十六)字文本,在MySQL
-
27-09-2019 - |
题
有没有一种方法指定Unicode character文本在MySQL?
我要替换Unicode character with Ascii character,喜欢的东西如下:
Update MyTbl Set MyFld = Replace(MyFld, "ẏ", "y")
但是,我使用的甚至是更隐蔽的字符,这是不提供的大多数字体,因此,我希望能够使用Unicode character文本,类似的东西
Update MyTbl Set MyFld = Replace(MyFld, "\u1e8f", "y")
这SQL声明是正在被调用,从PHP script-第一种形式不仅是可读的,但它并不实际的工作!
解决方案 2
感谢您的建议,但我认为问题是,该系统还回来。
有很多水平拆洗的,但据我可以(至少在此服务器上)告诉,命令
set names utf8
使得utf-8的处理正常工作,而
set character set utf8
不
在我的环境中,这些正在从PHP使用PDO叫,有什么区别,可能使。
不管怎样,谢谢!
其他提示
你可以指定 进制文本 (甚至 二进制文本)使用 0x
, x''
, 或 X''
:
select 0xC2A2;
select x'C2A2';
select X'C2A2';
但 要知道 回归类型的二进制串,使每一个字被认为是一个角色。你可以验证这一用 char_length
:
select char_length(0xC2A2)
2
如果你想要的 UTF-8 串相反,需要使用 convert
:
select convert(0xC2A2 using utf8mb4)
我们可以看到, C2 A2
被认为是符1UTF-8:
select char_length(convert(0xC2A2 using utf8mb4))
1
还有,你不必担心无效字节,因为 convert
将去除他们自动:
select char_length(convert(0xC1A2 using utf8mb4))
0
可以看出,输出 0
因 C1 A2
是无效的UTF-8字节的顺序。
可以使用 hex
和unhex
功能例如:
update mytable set myfield = unhex(replace(hex(myfield),'C383','C3'))
不隶属于 StackOverflow