2010-04-23 119 views
1

我在用户输入的字段中有几个转义字符,我找不出来。MySQL中的转义字符,红宝石

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

在红宝石中的人物,当从红宝石输出样子\ 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

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

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

感谢 - 事实证明,这是由mysqldump和后续源> db/backups/file.sql引起的。原始数据库中的字符看起来不错,我可以照常进行正则表达式检查。我只是没想到转储和导入会做到这一点。 – Swards 2010-05-26 20:11:34