From: Nobuyoshi Nakada Date: 2007-12-13T04:01:20+09:00 Subject: [ruby-dev:32562] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. なかだです。 At Wed, 12 Dec 2007 19:39:46 +0900, Martin Duerst wrote in [ruby-dev:32555]: > 例えば "D\u00FCrst".encode('iso-8859-2') の文字コード変換 > をテストしたいと思いますと、テストとして > assert_equal("D\xFCrst".force_encoding('iso-8859-2'), > "D\u00FCrst".encode('iso-8859-2')) > ぐらいを書きます。しかし現在 encode は存在しない (けど > 変換が可能) な Encoding を勝手に作るに対して、 > force_encoding はそういうことを一切しないので問題になります。 たしかに。逆に、encodeを先にするとforce_encodingのほうもセットさ れてしまいますね。 > 要約すると force_encoding と encode の「Encoding として可能」 > な認識が違ってしまうと問題になります。encode を一昔前の挙動 > に戻すか (これはこちらでやります)、それとも force_encoding > でなんだかの形で変換可能な Encoding 名をチェックするか > (チェックする関数そのものもこちらで作れます) にした方が > いいかと思います。どちらにするのかは全般的に決めた方がいい > と思いますが、今の中途半端な状態だけは避けた方がいいと思います。 「一昔前の挙動」というのは、対応していないencodingに変換したとき はASCII-8BITというものですか。それぞれのencodingを区別するために は、やはりそれだけではまずいと思うのですが。 「変換可能な Encoding 名をチェックする」というのは、動的に追加す る場合にも対応できるでしょうか。 今、rb_enc_find_index()で拡張ライブラリを自動的に探すようにしよ うとしていますので、必要なencodingは単にreplicateだけするライブ ラリを追加しておくのが単純でいいかもしれません。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦