ruby 1.9文字列の符号化互換性の問題を解決する

1133 ワード

最近またrubyを振り回して、1.9を使うつもりで、encodingに多くの問題があることを発見して、まず“invalid multibyte char(US-ACCI)
」、、、この問題はまだ解決していますが、magic commentでいいですが、地味です.もう1つは「incompatible character encodings:UTF-8 and ASCII-8 BIT」で、GGしても仕方がないのでEncodingを設定します.default_externalはほとんど役に立たない、default_internalにはgemがサポートされていないこともたくさんあります.最后にやはり自分で方法を考えてString<<方法はすべてのencodingをUTF-8に强制して、少し暴力的で、しかし少なくとも问题を解决することができて、しかし性能はもとの<<方法より遅くて、时间が元の3倍を费やして、しかし受け入れることができて、本当に性能を要して、肝心な部分はやはりもとの<<方法を呼び出すことができます.コードは後ろに表示されます.
1.9のencodingはこのようにして本当に私を失望させて、Yehudaの解釈を見てみますhttp://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/ああ、原因はもっとencodingを支持すること、日本語のロシア語に対してもっと良い支持などです.

if RUBY_VERSION > '1.9'
Encoding.default_external = Encoding::UTF_8
Fixnum.class_eval do
  alias_method :old_to_s, :to_s
  def to_s
    old_to_s.force_encoding("UTF-8")
  end
end
Array.class_eval do
  alias_method :old_pack, :pack
  def pack(*args)
    old_pack(*args).force_encoding("UTF-8")
  end
end
end