-2

我正在从抓取的网络中插入一些文本到我的数据库中。字符串中的某些字段具有不可打印/奇怪的字符。例如,

if text is "C__O__?__P__L__E__T__E", 
then the text in the database is stored only as "C__O__"

我知道 h()、strip_tags()... sanitize、... 等等。但我不想清理这个 SQL。activerecord 正确记录 SQL,在 phpMySQL 中运行时,查询正确执行。在 SQL 查询生成和执行之间发生了一些事情。

非常感谢您的帮助。

4

4 回答 4

1

只需将字符串中的问号替换为包含问号的字符串即可,我也没有找到任何其他方式:

["C__O__?__P__L__E__T__E", '?']

完美运行。

于 2009-03-23T10:17:05.507 回答
0

嗯.. 使用 CGI 转义,我发现进入系统的角色不是我预期的那样。它不是问号 (%3F) 而是问号 (%D5)。

C__%D5__M__P__L__%80___T__%80__
C__%3F__M__P__L__%3F___T__%3F__

最终,我在保存之前删除了不可打印的字符。

gsub(/[^[:print:]]/, '')

只有在删除字符串中的无效字符后,我才能正确保存该项目。其他解决方案都没有奏效,部分原因是事先没有清楚地理解这个问题。

于 2009-03-22T22:46:43.747 回答
0

你能用“\?”转义问号吗?

于 2009-03-22T23:30:16.810 回答
0

我知道这已经很晚了,但是当我们尝试将文件处理为实际使用 ISO-8859-1 字符编码的 UTF-8 时,我遇到了同样的问题。我怀疑您在抓取时遇到了类似的问题,您假设编码错误,最终导致事情失败。

于 2009-11-06T21:26:18.830 回答