有没有一种方法指定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

可以看出,输出 0C1 A2 是无效的UTF-8字节的顺序。

可以使用 hex unhex功能例如:

update mytable set myfield = unhex(replace(hex(myfield),'C383','C3'))

指定MySQL的字符串语法此处,你可以看到,有一个数字转义序列的规定。

然而,因为你是嵌入在SQL PHP,就可以计算在PHP右字节。确保你投入SQL实际上符合您的客户端字符集

scroll top