-2

スクレイピングされた Web からデータベースにテキストを挿入しています。文字列の一部のフィールドには、印刷できない/奇妙な文字が含まれています。例えば、

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()... サニタイズなどについては知っていますが、この 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__

最終的に、保存する前に印刷できない文字を gsubbed しました。

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

Only after removing the invalid characters in my string, was I able to save the item properly. None of the other solutions worked, partially because the problem was not understood clearly upfront.

于 2009-03-22T22:46:43.747 に答える