2012-01-16 4 views
0

を削除されている文字をエスケープし、その中にエスケープUnicode文字(\ u009A)RubyはUnicodeを1.9.2 - Unicodeは私が(?.encoding.name & .valid_encodingに応じて)UTF-8で文字列を持っている

があります

"Hammarskj \ u009Ald"

これは "Hammarskjšld"として印刷する必要がありますが、単に書記素を削除してください。 EG:テキストで

puts "Hammarskj\u009Ald" 
p "Hammarskj\u009Ald" 

結果:

Hammarskjld 
"Hammarskj\u009Ald" 

それも(私は、データベース内のデータを保存する場合は)ときにも同様に保存し、それを削除します。私はしばらく検索しましたが、それをエスケープする方法を理解できません(これは私が必要と思うことです)。そこにある情報の多くは1.8.7用であり、1.9.2用のもののいくつかは私が必要とするものではありません。

誰でも私が欲しいことをする方法はありますか?私は有効なUTF-8文字列を持っているようですが、私がやりたいことはデータベースにそのまま保存されていますが、エスケープされたUnicodeは常に破棄されます。

+1

\ u009AはUnicodeでは "š"ではなく、Windows-1252では9Aが "š"です。 Unicode "š"は\ u016​​1です。彼らがUnicodeを使用していると主張する人はあなたに嘘をついています。 –

+0

http://www.fileformat.info/info/unicode/char/9a/index.htmそうでなければ、と言います。 – Paul

+2

@Paul、fileformat.infoサイトは、ページの生成方法によって、一部の文字に間違ったイメージがあります。この場合、画像は「š」と表示されますが、名前は「」、カテゴリーは「その他、制御[CC]」と表示されます。これは制御文字であり、可視文字ではありません。おそらく間違っている(誤ったコード変換ですか?)という名前のデータがあります。「Hammarskjšld」という名前は意味をなさないでしょう。「Hammarskjöld」(U + 00F6が最後の3文字)である必要があります。 –

答えて

0

表示されていないだけでなく、削除されていますか?おそらく、あなたのフォントがそのコードポイントにゼロ幅でない文字を表示しているだけの問題かもしれません。

データベースから取り出してp 'またはinspectを編集すると、エスケープされた文字が表示されている場合は、ドロップされていないことを意味します。あなたの印刷物が問題です。

+0

OSX端末にはフォントがあります。そこにはUTF-8文字があります。しかし、それもデータベースに表示されません(エスケープされた)、文字はちょうど削除されます。私はそれを取り出して検査しました。実際には消えました。 – Paul

関連する問題