[ruby-dev:31746] Re: string literal encoding

From: "NARUSE, Yui" <naruse@...>
Date: 2007-09-06 07:40:46 UTC
List: ruby-dev #31746
成瀬です。

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  <naruse@airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA

In This Thread