命令行MySQL中的Unicode转义序列

时间:2011-03-28 17:47:49

标签: mysql unicode command-line unicode-escapes

简短版:

可以使用哪种转义序列在命令行mysql中搜索unicode字符?

长版:

我正在寻找一种从命令行在mysql中搜索包含unicode序列U + 200B的记录的方法。我无法弄清楚要使用哪种逃生方式。我已经尝试了\ u200B和 x200B ,甚至我终于找到一个建议使用_utf8语法的博客。这将在命令行中生成字符:

select _utf8 x'200B';

现在我一直试图让它在“LIKE”查询中工作。

这会生成字符,但当放在LIKE部分时,%似乎失去了它们的特殊含义:

select _utf8 x'0025200B0025';

我也试过了一个concat,但它也不起作用:

select concat('%', _utf8 x'200B', '%');

更多背景资料

我有一些数据包含零宽度空格字符(zwsp),Unicode Point U + 200B。这通常是由在其输出中使用zwsp的网站进行复制/粘贴引起的。对于大多数unicode字符,我可以将字符粘贴到终端中(或使用键码创建它),但由于这个字符是不可见的,因此更具挑战性。我可以创建一个生成“%%”序列的文件,并将其复制/粘贴到终端,它将工作,但它会使我的命令历史记录和终端输出变得棘手。我认为在MySQL中有一种直接的方法可以做到这一点,但到目前为止,我已经做得不够了。

提前致谢,

-Paul Burney

2 个答案:

答案 0 :(得分:4)

select _utf8 x'0025200B0025';

那不是UTF-8,它是UTF-16 / UCS-2。如果您的MySQL副本中有UCS-2支持,您可以说SELECT _ucs2 0x0025200B0025

否则,UTF-8中的字节序列编码字符U + 200B将为0xE2,0x80,0x8B:

select 0xE2808B;

答案 1 :(得分:2)

如果是Linux,则按住Ctrl + Shift + U然后释放U并键入200B。