From: "NARUSE, Yui" Date: 2007-09-06T16:40:46+09:00 Subject: [ruby-dev:31746] Re: string literal encoding 成瀬です。 Nobuyoshi Nakada wrote: > JRuby的には「ASCII≠バイナリ」ということでいいんじゃないでしょう > か。もしそうであれば、ASCIIのみでも非ASCIIを含んでいても文字列リ > テラルは常にJava Stringで、結合や比較は問題なく行えるはずです。 > 逆に「ASCII(≒バイナリ)=byte array」ということであれば、そういっ > たbyte array/Java String間の変換は、リテラルに限らずしばしば必要 > になるはずで、リテラルについてだけ気にしてもしょうがないと思いま > す。 もっともな話だとは思うのですが、JRubyがあるStringインスタンスを内部的に バイナリで持っているかUTF-16で持っているかって、そんなに重要な話なのです か。ユーザから(外部から)はどちらも同じStringインスタンスに見えるのです から(そのはずですよね)、どうでもいいのでは。 > 妥協点として、「ASCIIしか含まないものはencoding="ASCII"」まで規 > 定せずに、「リテラルのencodingは最大公約数的なものを使う」くらい > でどうでしょうか。ASCIIベースの実装ならASCII/binary、UTF-16ベー > スならUTF-16ベース。でないと実際にはかえって不便でしょうがなくな > ると思うのですが。 むしろ規定すべきはencodingの戻り値のようなユーザから見える部分で、 「ASCIIしか含まないものはencoding="ASCII"」とかを規定するべきではないで しょうか。たとえ内部的にUTF-16で持っていても、encodingは"ASCII"を返さね ばならない、と。正直に内部文字列の文字コードを返さなければいけない必要は ないのですから。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA