代码之家  ›  专栏  ›  技术社区  ›  Mark Swardstrom

在mysql和ruby中转义字符

  •  1
  • Mark Swardstrom  · 技术社区  · 16 年前

    我在用户输入的字段中有几个转义字符,我无法确定。

    我知道它们是“聪明”的单引号和双引号,但我不知道如何在MySQL中搜索它们。

    Ruby中的字符,当Ruby输出类似于\222、\223、\224等时

    irb> "\222".length => 1
    

    那么-你知道如何在MySQL中搜索这些吗?当我在mysql中查找时,它们看起来像'?'.

    我想在文本字段中查找所有具有此字符的记录。我试过

    mysql> select id from table where field LIKE '%\222%' 
    

    但那不起作用。

    一些更多信息-在执行mysqldump之后,这就是其中一个字符的表示方式-“\\xe2\\x80\\x99”。这是一个聪明的单引号。

    最后,我正在构建一个RTF文件,字符输出完全错误,所以我现在正在尝试用“哑”引号替换它们。我可以做一个gsub(/\222\,“”“)。

    谢谢。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Your Common Sense    16 年前

    我不太明白你的问题,但这里有一些信息给你:

    • 首先,数据库中没有转义字符。因为每个字符都按原样存储,没有转义。
    • 他们看起来不像我 ? “。我只是错误的终端设置。设置名称查询应该首先执行,以匹配客户端编码。
    • 您必须确定字符集,并在数据库、MySQL客户机、Ruby的每个阶段使用它。
    • 您应该区分Ruby字符串表示和字符本身。
    • 要在mysql查询中输入字符,可以使用 char function . 但只在终点站。在Ruby中,只需使用字符本身。
    • 智能引号看起来像是用Unicode编码的2字节。你必须先确定你的编码。