2011年1月31日

[ruby-list:47801] Re: [].join.encoding # => #

成瀬です。

2011年1月31日16:22 KISHIMOTO, Makoto <ksmakoto@xxxxx>:
> きしもとです
>
>> sora_hです。
>>
>> 2011/1/31 5.5 <5.5@xxxxx>:

>> >> ここはString#encode ではなく、String#force_encoding を使うべきです。
>> >
>> > "".force_encoding("ASCII-8BIT") と "".encode("ASCII-8BIT") は
>> > 違うのでしょうか?
>> http://rurema.clear-code.com/1.9.2/method/String/i/force_encoding.html
>>
>> force_encodingでは、エンコード作業をせずにエンコーディング情報だけを変更します。
>> 間違えて認識された文字列のエンコーディングを変更することですね。
>
> force_encoding は self を変更します(encode! も self を変更します)。
> encode は self からエンコーディング変換をした新しい文字列を返します。

String#force_encoding はエンコーディングの「指定」、
String#encode はエンコーディングの「変換」なので意味が違います。
この意味の違いは、"\u3042".encode("ascii-8bit") あたりで明確な違いになります。

なお、String#force_encodingを非破壊的に使いたいときは
str.dup.force_encoding("US-ASCII") などと使います。


--
NARUSE, Yui <naruse@xxxxx>


投稿者 xml-rpc : 2011年1月31日 16:40
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101677
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。