在Ruby中转义MySQL中的字符

时间:2010-04-23 19:53:45

标签: mysql ruby special-characters

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

我知道它们是“智能”单引号和双引号,但我不知道如何在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 个答案:

答案 0 :(得分:1)

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

  • 首先,数据库中没有转义字符。因为每个字符都按原样存储,没有转义。
  • 他们不“看起来像?”。我的错误终端设置。 SET NAMES查询总是应该首先执行,以匹配客户端编码。
  • 你必须确定字符集并在每个阶段使用它 - 在数据库中,在mysql客户端中,在ruby中。
  • 你应该区分红宝石字符串表示与字符本身。
  • 要在mysql查询中输入字符,可以使用char function。但仅在终端。在红宝石中,只需使用角色本身。
  • 智能引号看起来像unicode中的2字节编码。您必须先确定编码。