2
4

1 に答える 1

0

組み込みのString#force_encodingメソッドは、マルチバイト シンボルを置換ではなく、それ自体の表現に変換するため、それを使用することはできません。

str = "“ ” ’"
str.force_encoding("ISO-8859-1")
#=> "\xE2\x80\x9C \xE2\x80\x9D \xE2\x80\x99"

String#encodeを試すこともできますが、無効/未定義のすべての文字を個別に置き換えることはできません。

str = "“ ” ’"
str.encode("ISO-8859-1", :invalid => :replace, :undef => :replace, :replace => "")
#=> "  "

str = "“ ” ’ €"
str.encode("ISO-8859-1", :invalid => :replace, :undef => :replace, :replace => "'")
#=> "' ' ' '"

ほとんどの場合、Unicode マルチバイト文字と対応する ASCII 文字との関係を維持するライブラリを作成または検索して、それを使用する必要があります。

于 2012-05-26T03:39:45.820 に答える