我无法理解用户输入字段中的几个转义字符。
我知道它们是“智能”单引号和双引号,但我不知道如何在 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\, "'")。
谢谢。
最佳答案
我不太明白你的问题,但这里有一些信息给你:
- 首先,数据库中没有转义字符。因为每个字符都按原样存储,没有转义。
- 他们“看起来不像
?
”。我只是错误的终端设置。 SET NAMES 查询总是应该首先执行,以匹配客户端编码。 - 你必须确定字符集并在每个阶段使用它 - 在数据库中,在 mysql 客户端中,在 ruby 中。
- 您应该将 ruby 字符串表示与字符本身区分开来。
- 要在 mysql 查询中输入字符,可以使用 char function .但仅限于终端。在 ruby 中,只需使用字符本身。
- 智能引号看起来像用 unicode 编码的 2 字节。您必须先确定编码。
关于mysql - 在 MySQL 和 Ruby 中转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701591/