【问题标题】:Unicode escape sequence in command line MySQL命令行 MySQL 中的 Unicode 转义序列
【发布时间】:2011-07-24 16:36:37
【问题描述】:

短版:

可以使用什么样的转义序列在命令行 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 点 U+200B。这通常是由在其输出中使用 zwsp 的网站复制/粘贴引起的。对于大多数 unicode 字符,我可以将字符粘贴到终端中(或使用键码创建它),但由于这个字符是不可见的,因此更具挑战性。我可以创建一个生成“%%”序列的文件并将其复制/粘贴到终端,它会起作用,但它会使我的命令历史记录和终端输出变得混乱。我认为在 MySQL 中有一种直接的方法可以做到这一点,但到目前为止我还不够。

提前致谢,

-保罗·伯尼

【问题讨论】:

    标签: mysql unicode command-line unicode-escapes


    【解决方案1】:
    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;
    

    【讨论】:

    • 太棒了!这可以在命令行中使用 LIKE 查询和 CONCAT,例如 SELECT * FROM t WHERE field_name LIKE CONCAT('%',0xE2808B,'%');非常感谢您的帮助!
    【解决方案2】:

    如果是 Linux 则按住 Ctrl + Shift + U 然后松开 U 并输入 200B。

    【讨论】:

      猜你喜欢
      • 2013-02-01
      • 2019-10-05
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多