2010-04-23 117 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