これは非常に簡単だと確信していますが、これらすべてのバックスラッシュで結びついています。ルビー文字列の文字エンコーディングを修正するバックスラッシュを追加する
ウェブサイトから(丁寧に)私が掻き集めているデータがあります。時折、次のような文章が私に届きます。
u00a362 000? you must be joking
もちろん、「2 000?冗談じゃないわ'。 irbの短いテストで解読されました。
ruby-1.9.2-p180 :001 > string = "u00a3"
=> "u00a3"
ruby-1.9.2-p180 :002 > string = "\u00a3"
=> "£"
もちろん、バックスラッシュを追加するとデコードされます。
puts str.gsub('u00', '\\u00')
\u00a3
出力されるの結果:私はthis questionの助けを借りて、以下を作成しました。これはすべてうまいですが、文字列自体に£を入れたいと思います。ちょうどputs
それだけでは不十分です。
gsub('u00a3', '£')
他の文字は間違いないと思いますので、私は行方不明です。
ありがとうございました。
おはよう、ありがとうございます。私の最初のブラシは「パック」です。あなたのマップ内の角括弧で何をしているのか分かりません。私がirbで動かすと、次のようになります: '£62 000?あなたは冗談を言わなければならない - その迷子はどこから来たのか? – djb
'Array#pack(" U * ")'は通常、文字列のすべての文字を取り、そのユニコードビットの値を配列に格納する 'String#unpack(" U * ")'と結合されています。したがって、たとえ1つの価値があっても、パックを配列で提供する必要があります。どこから出てくる「Â」に関しては、わかりません。それは私のためにうまく動作します... – Vache
OK - 私は 'Â'は別の問題だと思います - いつでもどこでも'£ 'を置くので、それはどこかから来ています。これは私の問題を解決します。ご協力いただきありがとうございます。 – djb