2009-03-22 10 views
-2

傷ついたWebのテキストをデータベースに挿入します。文字列のフィールドのいくつかは、印刷できない/奇妙な文字を持っています。例えば、Rails ActiveRecord:印刷不可能/奇妙な文字を含むテキストを挿入する

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

私は(時間について知っている)、strip_tags()...サニタイズ、...などなどしかし、私はこのSQLをサニタイズする必要はありません。 activerecordはSQLを正しくログに記録し、phpMySQLで実行するとクエリが正しく実行されます。 SQLクエリ生成とそれが実行される間に何かが起こります。

大変助かります。

+0

?パラメータ置換文字です。パラメータとしてではなくクエリテキストで使用している場合にのみ発生します。あなたがしていることの正確な例を与えるためにあなたの質問を修正してください。 – womble

+0

はい、問題の原因となっているコードの例を示してください – Gareth

+0

-1質問には説明が必要です。通常のfindメソッドでSQLを呼び出す場合、Railsは?を代用して素晴らしい仕事をします。 string appendを使用して手動で値をクエリに挿入するだけの場合は、これが問題になる可能性があります。 Garethとwombleのコメントに対処する必要があります。 – hyuan

答えて

0

Hmmmm .. CGIエスケープを使って、私はシステムに登場するキャラクターが私が期待していたものではないことを知りました。疑問符(%3F)ではなく疑問符(%D5)です。

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

結局私は保存する前に、印刷不能文字をgsubbed。

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

だけ私の文字列に無効な文字を削除した後、私は正常にアイテムを保存することができました。 問題が明確に前もって理解されていなかったことが原因で、他の解決策はどれも効果がありませんでした。

0

"¥?"を使用して疑問符をエスケープできますか?

[「?」「?C__O __ __ P__L__E__T__E」、]

作品:

1

だけで疑問符を含む文字列と文字列に疑問符を置き換える、私は他の方法のいずれかを発見していません完全に。

0

これは遅かったですが、ISO-8859-1文字エンコーディングを実際に使用しているUTF-8としてファイルを処理しようとしたときに同じ問題が発生しました。私は間違ったエンコーディングを想定したあなたのスクラップで同様の問題を抱えていたと思われます。

関連する問題