Iconvが文字列のエンコーディングを変換するために使用されていることを私は知っています。私の理解から、Kconvは同じ目的のためです(私は間違っていますか?)。
私の質問は、それらの違いは何ですか、そして変換をエンコードするために何を使うべきかということです。
ところで、Iconvが1.9.3バージョンから非推奨になるという情報が見つかりました。
Iconvが文字列のエンコーディングを変換するために使用されていることを私は知っています。私の理解から、Kconvは同じ目的のためです(私は間違っていますか?)。
私の質問は、それらの違いは何ですか、そして変換をエンコードするために何を使うべきかということです。
ところで、Iconvが1.9.3バージョンから非推奨になるという情報が見つかりました。
https://stackoverflow.com/users/23649/jtbandesが言うように、それは漢字(「ひらがなとともに現代の日本語の書記体系で使用される表語の漢字」http://en.wikipedia)に似ていますが、特殊化Kconvされています。 .org / wiki / Kanji)。特に日本語に取り組んでいない限り、必要ないと思います。IconvKconv
Ruby 1.9を使用している場合は、ほとんどの場合、の代わりに組み込みのエンコーディングサポートを使用できますIconv。私はこれを読むまで何時間も自分が何をしていたかを理解しようとしました:
http://www.joelonsoftware.com/articles/Unicode.html
その後、次のようなものを使い始めることができます
String#encode # Ruby 1.9
String#encode! # Ruby 1.9
String#force_encoding # Ruby 1.9
自信を持って。より複雑なニーズがある場合は、http://blog.grayproductions.net/categories/character_encodingsをお読みください。
コメントでJohnZに感謝します
Iconv文字を音訳できるため、Ruby 1.9でも引き続き役立ちます(String#encode他ではできないこと)。StringUTF-8に変換する関数を使用して拡張する方法の例を次に示します。
require 'iconv'
class ::String
# Return a new String that has been transliterated into UTF-8
# Should work in Ruby 1.8 and Ruby 1.9 thanks to http://po-ru.com/diary/fixing-invalid-utf-8-in-ruby-revisited/
def as_utf8(from_encoding = 'UTF-8')
::Iconv.conv('UTF-8//TRANSLIT', from_encoding, self + ' ')[0..-2]
end
end
"foo".as_utf8 #=> "foo"
"foo".as_utf8('ISO-8859-1') #=> "foo"
JohnZに感謝します!