Ruby Forum Ruby-dev > non-locale filename encoding

Posted by Tanaka Akira (Guest)
on 21.07.2008 11:25
(Received via mailing list)
Dir $B$N;H$$$+$?$H$7$F!"%U%!%$%kL>$N%(%s%3!<%G%#%s%0$,(B locale
encoding $B$K=>$C$F$$$k$H$O2>Dj$;$:$K!"%W%m%0%i%`$,$,$s$P$k$H(B
$B$-$NOC$G$9$,!"8=>u$N(B Dir $B$N(B internal_encoding,
external_encoding $B$H$$$&5!9=$OE,@Z$J$b$N$G$O$J$$$h$&$K;W$$$^(B
$B$9!#(B

$B%W%m%0%i%`$,$,$s$P$k$H$$$&0U?^$@$H$9$l$P!"(BRuby $B$K4|BT$5$l$k(B
$B$N$O!"$I$N%W%i%C%H%U%)!<%`$G$b3N<B$K%U%!%$%k$rF1Dj$G$-$k(B
string $B$rF@$k$H$$$&%$%s%?!<%U%'!<%9$G$7$g$&!#(B

$B6qBNE*$K$$$($P!"(BWindows $B$G$O(B UTF-16LE $B$"$k$$$O(B UTF-8 
$B$N(B
string $B$,F@$i$l!"(BUnix $B$G$OJQ49$5$l$F$$$J$$%P%$%HNs(B ($B$K(B
locale encoding $B$r$D$1$?(B string) $B$,F@$i$l$k$3$H$,4|BT$5$l$^(B
$B$9!#(B
(Unix $B$N>l9g$KIU$1$k%(%s%3!<%G%#%s%0$O(B locale encoding $B$G$J(B
$B$/$F!"(Bascii-8bit $B$H$$$&$N$b$"$j$&$k$+$b$7$l$^$;$s$,(B)

$B$7$+$7!"(Binternal_encoding, external_encoding $B$G$O!"%W%i%C%H(B
$B%U%)!<%`$K$h$C$FJQ$o$k!"$=$&$$$&;XDj$O$G$-$J$$$h$&$K8+$($^$9!#(B

$BI,MW$J$N$O!"%W%m%0%i%`$,$,$s$P$k$+$i$J$k$Y$/@8$N$^$^$N%U%!%$(B
$B%kL>$r$h$3$;!"$H$$$&0U?^$rEA$($k%*%W%7%g%s$G$O$J$$$G$7$g$&$+!#(B

$B$^$?!"(Binternal_encoding, external_encoding $B$C$F!"$I$N$/$i$$(B
$BLr$KN)$D$s$G$7$g$&$+!#(B

$B%7%9%F%`$rC10l(B locale $B$G1?MQ$7$F$$$k$H$-$O2?$b;XDj$9$kI,MW$,(B
$BM-$j$^$;$s$7!"(Blocale $B$KMj$i$J$$$H$-$O>e5-$N$h$&$KLr$KN)$A$^(B
$B$;$s!#(B

$B$^$?!"JQ49$r(B Dir $B$NCf$G9T$&$H!"JQ49A0$N(B string 
$B$,%"%W%j%1!<(B
$B%7%g%s$KM?$($i$l$^$;$s!#$=$&$9$k$H!"(B($B>/$J$/$H$b(B Unix 
$B$G$O(B)
open $B$J$I$KI,MW$J(B string $B$,F@$i$l$J$$$3$H$K$J$j$^$9!#(B

$B$"$H!"@8$N$^$^$N%U%!%$%kL>$,F@$i$l$l$P!"(BString#encode $B%a%=%C(B
$B%I$GF1MM$NJQ49$O%"%W%j%1!<%7%g%sB&$G<BAu2DG=$G$9!#(B

internal_encoding, external_encoding $B$C$F!"$I$&$$$&%"%W%j%1!<(B
$B%7%g%s$GLr$KN)$D$s$G$7$g$&(B?
Posted by NARUSE, Yui (Guest)
on 23.07.2008 01:38
(Received via mailing list)
$B@.@%$G$9!#(B

Tanaka Akira wrote:
> Dir $B$N;H$$$+$?$H$7$F!"%U%!%$%kL>$N%(%s%3!<%G%#%s%0$,(B locale
> encoding $B$K=>$C$F$$$k$H$O2>Dj$;$:$K!"%W%m%0%i%`$,$,$s$P$k$H(B
> $B$-$NOC$G$9$,!"8=>u$N(B Dir $B$N(B internal_encoding,
> external_encoding $B$H$$$&5!9=$OE,@Z$J$b$N$G$O$J$$$h$&$K;W$$$^(B
> $B$9!#(B

$B$"$^$j%W%m%0%i%`$K$,$s$P$i$;$?$/$J$$$J$!$H;W$C$F$$$k$N$G$9$,!"(B
$B$$$A$$$A0z?t$rM?$($"$j!"(BRuby $B<+BN$,$,$s$P$k$N$b$=$NCf$KF~$k(B
$B$H$$$&<gD%$b@.$jN)$D$N$G$7$g$&$M$'!#(B

> $B%W%m%0%i%`$,$,$s$P$k$H$$$&0U?^$@$H$9$l$P!"(BRuby $B$K4|BT$5$l$k(B
> $B$N$O!"$I$N%W%i%C%H%U%)!<%`$G$b3N<B$K%U%!%$%k$rF1Dj$G$-$k(B
> string $B$rF@$k$H$$$&%$%s%?!<%U%'!<%9$G$7$g$&!#(B

$B$3$NI,MW@-$OM}2r$7$^$9!#(B

> $B6qBNE*$K$$$($P!"(BWindows $B$G$O(B UTF-16LE $B$"$k$$$O(B UTF-8 $B$N(B
> string $B$,F@$i$l!"(BUnix $B$G$OJQ49$5$l$F$$$J$$%P%$%HNs(B ($B$K(B
> locale encoding $B$r$D$1$?(B string) $B$,F@$i$l$k$3$H$,4|BT$5$l$^(B
> $B$9!#(B
> (Unix $B$N>l9g$KIU$1$k%(%s%3!<%G%#%s%0$O(B locale encoding $B$G$J(B
> $B$/$F!"(Bascii-8bit $B$H$$$&$N$b$"$j$&$k$+$b$7$l$^$;$s$,(B)
> 
> $B$7$+$7!"(Binternal_encoding, external_encoding $B$G$O!"%W%i%C%H(B
> $B%U%)!<%`$K$h$C$FJQ$o$k!"$=$&$$$&;XDj$O$G$-$J$$$h$&$K8+$($^$9!#(B

$B$G$-$^$;$s$M!#(B

$B$7$+$7!"<B:]$N$H$3$m!"8=:_<+F0JQ49$,9T$o$l$k$N$O(B
Windows $B$/$i$$$J$o$1$G(B ($B$3$l$b8!F$Cf$G$O$"$k(B)$B!"(B
$B$?$$$F$$$N>l9g$OF0:n$,JQ$o$i$J$$$o$1$G$9!#(B

$B$H$9$k$H!"EDCf$5$s$NDs0F$O!"%G%U%)%k%H$r$b$C$H<+F0JQ49B&$K(B
$BE]$7$?>l9g$K??2A$rH/4x$9$k$N$G$9$+$M!#(B

> $B$^$?!"JQ49$r(B Dir $B$NCf$G9T$&$H!"JQ49A0$N(B string $B$,%"%W%j%1!<(B
> $B%7%g%s$KM?$($i$l$^$;$s!#$=$&$9$k$H!"(B($B>/$J$/$H$b(B Unix $B$G$O(B)
> open $B$J$I$KI,MW$J(B string $B$,F@$i$l$J$$$3$H$K$J$j$^$9!#(B
> 
> $B$"$H!"@8$N$^$^$N%U%!%$%kL>$,F@$i$l$l$P!"(BString#encode $B%a%=%C(B
> $B%I$GF1MM$NJQ49$O%"%W%j%1!<%7%g%sB&$G<BAu2DG=$G$9!#(B
> 
> internal_encoding, external_encoding $B$C$F!"$I$&$$$&%"%W%j%1!<(B
> $B%7%g%s$GLr$KN)$D$s$G$7$g$&(B?

$BEv;~$O$"$^$jL@<(E*$K(B force_encoding / encode 
$B$5$;$?$/$J$$$H$$$&<q;]$G$7$?!#(B
$B7k6I$N$H$3$m!"%W%m%0%i%`$G4hD%$i$;$k$Y$-$+!"(B
$B@_Dj$N<jCJ$r$9$k$Y$-$+$H$$$&=j$J$N$G$9$+$M$'!#(B
# $B$D$^$k$H$3$m!"Nc30$,=P$?;~$N=hM}$NMxJX@-$+(B
Posted by Tanaka Akira (Guest)
on 23.07.2008 06:22
(Received via mailing list)
In article <48866F3F.80906@airemix.jp>,
  "NARUSE, Yui" <naruse@airemix.jp> writes:

> $B$"$^$j%W%m%0%i%`$K$,$s$P$i$;$?$/$J$$$J$!$H;W$C$F$$$k$N$G$9$,!"(B
> $B$$$A$$$A0z?t$rM?$($"$j!"(BRuby $B<+BN$,$,$s$P$k$N$b$=$NCf$KF~$k(B
> $B$H$$$&<gD%$b@.$jN)$D$N$G$7$g$&$M$'!#(B

Dir $B$N(B internal_encoding, external_encoding $B$r;H$&$K$O!"%W%m(B
$B%0%i%`$,JQ$JJ}8~$K$,$s$P$kI,MW$,M-$k$h$&$K;W$($^$9!#(B

> $B$7$+$7!"<B:]$N$H$3$m!"8=:_<+F0JQ49$,9T$o$l$k$N$O(B
> Windows $B$/$i$$$J$o$1$G(B ($B$3$l$b8!F$Cf$G$O$"$k(B)$B!"(B
> $B$?$$$F$$$N>l9g$OF0:n$,JQ$o$i$J$$$o$1$G$9!#(B
>
> $B$H$9$k$H!"EDCf$5$s$NDs0F$O!"%G%U%)%k%H$r$b$C$H<+F0JQ49B&$K(B
> $BE]$7$?>l9g$K??2A$rH/4x$9$k$N$G$9$+$M!#(B

$B$$$$$(!#(B

$B$?$H$($P!"$"$k%G%#%l%/%H%j$N3F%U%!%$%k$N%5%$%:$rI=<($9$k$3$H(B
$B$r9M$($F$_$^$7$g$&!#(B

% mkdir /tmp/xyz
% cd /tmp/xyz
% ruby -e 'open("\x91\x92\x93\x94", "w")'
% ls
????

$B$3$3$G!"%(%s%3!<%G%#%s%0$r;XDj$7$J$1$l$P!"0J2<$N$h$&$K$J$j$^(B
$B$9!#(B

% ruby -e '
Dir.open(".") {|d|
  while n = d.read
    p [File.size(n), n]
  end
}'
[4096, "."]
[45056, ".."]
[0, "\x91\x92\x93\x94"]

$B$3$N%W%m%0%i%`$O!"(BUnix $B$G$OG$0U$N%U%!%$%kL>$K$D$$$FF0:n$7$^(B
$B$9!#$?$H$($P!">e5-$N(B \x91\x92\x93\x94 $B$G$bF0$-$^$9!#(B

$B$7$+$7!"(BWindows $B$G!"(BUnicode 
$B$K$O$"$k$,!"%7%9%F%`%3!<%I%Z!<%8(B
$B$G$OI=8=$G$-$J$$J8;z(B ($BF|K\8lHG(B Windows 
$B$N>l9g$G$$$($P!"(BCP932
$B$G$OI=8=$G$-$J$$J8;z(B) $B$,%U%!%$%kL>$K;H$o$l$F$$$k$H!"$*$=$i$/(B
$BF0$+$J$$$G$7$g$&!#(B

Windows $B$G$=$&$$$&%U%!%$%kL>$b07$*$&$H9M$($?>l9g!"8=;~E@$G$O!"(B
Ruby $B$K$O$=$N$?$a$N5!9=$,F~$C$F$$$J$$$N$G$I$&;XDj$9$k$+$OL@(B
$B$i$+$G$OM-$j$^$;$s$,!"2>$K!"(B:external_encoding=>"utf-16le"
$B$H$9$k$H(B Unicode $B$J%U%!%$%kL>$r07$&$h$&$K$J$j!"(B
:external_encoding=>"utf-16le", :internal_encoding=>"utf-8"
$B$H$9$k$H$=$l$r(B UTF-8 $B$K$7$F$o$?$7$F$/$l$k$7$F$_$^$7$g$&!#(B
$B$=$&$9$k$H<!$N$h$&$K$J$j$^$9!#(B

% ./ruby -e '
Dir.open(".", :external_encoding=>"utf-16le", 
:internal_encoding=>"utf-8") {|d|
  while n = d.read
    p [File.size(n), n]
  end
}'
-e:3:in `read': invalid byte sequence (RuntimeError)
        from -e:3:in `block in <main>'
        from -e:2:in `open'
        from -e:2:in `<main>'

$B$7$+$7!";DG0$J$3$H$K!"$3$l$O(B Unix $B$G$OF0$-$^$;$s!#(B
$BD>@\E*$K$O!">e5-$N%(%i!<$O!"(B"." $B$r(B UTF-16LE $B$+$i(B UTF-8 
$B$KJQ(B
$B49$7$h$&$H$7$FH/@8$7$F$$$^$9!#(B

$B$^$?!"2>$KJQ49%(%i!<$,5/$-$J$+$C$?$H$7$F$b!"0lHL$KJQ49$r9T$&(B
$B$H%P%$%HNs$,JQ2=$7$^$9!#$7$+$7!"(BFile.size $B$O%U%!%$%k$r$A$c$s(B
$B$HF1Dj$9$kI,MW$,$"$j$^$9!#$H$9$k$H!"5UJQ49$,I,MW$K$J$j$^$9$,!"(B
$B0lHL$KJQ49!&5UJQ49$G%P%$%HNs$,(B round trip $B$9$kJ]>Z$O$"$j$^$;(B
$B$s!#(B

$BL@$i$+$J%1!<%9$H$7$F$O!"(BGB18030 $B$,$"$2$i$l$^$9!#(BGB18030 
$B$O(B
UTF-8 $B$N%9!<%Q!<%;%C%H$G$9$+$i!"(BGB18030 -> UTF-8 -> GB18030
$B$G$O85$KLa$i$J$$%1!<%9$,B8:_$7$^$9!#(B

$B$=$&$9$k$H!"$3$&$$$&JQ49$r9T$&$N$O(B Windows $B$@$1$K8BDj$9$kI,(B
$BMW$,M-$j$^$9!#$=$9$k$H<!$N$h$&$K$J$j$^$9!#(B

% ./ruby -e '
opt = /windows/ =~ RUBY_PLATFORM ? {:external_encoding=>"utf-16le", 
:internal_encoding=>"utf-8"} : {}
Dir.open(".", opt) {|d|
  while n = d.read
    p [File.size(n), n]
  end
}'

$B7k6I!"(BFile.size $B$O3N<B$K%U%!%$%k$rF1Dj$9$kI,MW$,$"$C$F!"$=$N(B
$BE@$G$OJ8;z%3!<%I$NJQ49$O4pK\E*$K<YKb$G!"Lq2p<T$G$7$+M-$j$^$;(B
$B$s!#(B

$B$b$A$m$s!"$3$NLdBj$O(B File.size $B$@$1$G$O$J$/$F!"%U%!%$%k$N<B(B
$BBN$K%"%/%;%9$9$k$9$Y$F$NA`:n(B (stat, open, unlink, link, ...)
$B$GLdBj$K$J$j$^$9!#(B

$B$=$&$9$k$H!"$d$O$jJQ49$7$F$$$J$$@8$N%U%!%$%kL>$,I,MW$G!"(B
Unix $B$G$O%P%$%HNs$=$N$^$^$G(B locale $B$J(B encoding 
$B$,$D$$$?$b$N!"(B
Windows $B$G$O(B UTF-8 $B$J$b$N$rJV$9%*%W%7%g%s$r2>$K(B
:native_filename=>true $B$H$9$k$H!"0J2<$N$h$&$K=q$1$^$9!#(B

% ruby -e '
Dir.open(".", :native_filename=>true) {|d|
  while n = d.read
    p [File.size(n), n]
  end
}'

$B$3$3$G$O!"@8$N%U%!%$%kL>$r(B p $B$GI=<($7$F$$$^$9$,!"$A$c$s$H(B
locale $B$K=>$C$F%(%s%3!<%I$9$k$J$i!"0J2<$N$h$&$KJQ49$7$^$9!#(B
($B$3$3$GJQ49$K<:GT$7$?$H$-$NBP=h$,I,MW$+$b$7$l$^$;$s(B)

$B$7$+$7!"(BFile.size $B$KEO$9%U%!%$%kL>$OJQ49$7$^$;$s$7!"$7$F$O$$(B
$B$1$^$;$s!#(B

% ruby -e '
Dir.open(".", :native_filename=>true) {|d|
  while n = d.read
    p [File.size(n), n.encode(Encoding.locale_charmap)]
  end
}'

$B$^$?!"%U%!%$%kL>$rI8=`F~NO$K=P$9$N$G$J$/!"(BGUI $B$GI=<($9$k$N$G(B
$B$"$l$P!"(BGUI 
$B$N07$&%3!<%I$KJQ49$9$kI,MW$,$"$k$G$7$g$&!#$7$+$7!"(B
$B$d$O$j$=$N>l9g$G$b(B File.size $B$KEO$9%U%!%$%kL>$OJQ49$7$^$;$s(B
$B$7!"$7$F$O$$$1$^$;$s!#(B

$B$3$N$h$&$K!"7k6I!"%U%!%$%kL>$r3N<B$K07$&$N$KI,MW$J5!9=$O!"3N(B
$B<B$K%U%!%$%k$rF1Dj$G$-$k%U%!%$%kL>$rF@$k$3$H$G!"J8;z%3!<%I$N(B
$BJQ49$O<YKb$G$9!#(B

$BJQ49$OI=<($N:]$KI,MW$K$J$j$^$9$,!"BP>]$,%U%!%$%kL>$G$"$k0J>e!"(B
$B%U%!%$%k$,F1Dj$G$-$J$/$J$k$N$O$`$7$mLdBj$,Bg$-$$$H9M$($i$l$^(B
$B$9!#(B

$B$=$l$J$N$K!"$J$s$G$=$s$J5!9=$r(B Dir $B$K$D$1$k$s$G$7$g$&(B?

>> internal_encoding, external_encoding $B$C$F!"$I$&$$$&%"%W%j%1!<(B
>> $B%7%g%s$GLr$KN)$D$s$G$7$g$&(B?
>
> $BEv;~$O$"$^$jL@<(E*$K(B force_encoding / encode $B$5$;$?$/$J$$$H$$$&<q;]$G$7$?!#(B

locale $B$K=>$C$F1?MQ$5$l$F$$$k%7%9%F%`$rA[Dj$9$kMQK!$J$i(B
$B8=>u$G(B force_encoding $B$b(B encode $B$bITMW$G$9!#(B

$B$=$&$G$J$$A[Dj$r$9$k$J$i!"(Binternal_encoding,
external_encoding $B$,Lr$KN)$D%"%W%j%1!<%7%g%s$C$F$I$&$$$&%1!<(B
$B%9$G$7$g$&(B?

Windows $B$G(B Unicode $B$J%U%!%$%kL>$r07$&$H$-$@$H$7$F$b!"$=$N=q(B
$B$-J}$H$7$F!"%]!<%?%V%k$K$J$i$J$$=q$-J}$rDs0F$9$k$N$O$h$/$J$$(B
$B$s$8$c$J$$$G$7$g$&$+!#(B

internal_encoding, external_encoding $B$,Lr$KN)$D%"%W%j%1!<%7%g(B
$B%s$N6qBNE*$JNc$C$F$J$$$s$G$7$g$&$+(B?

> $B7k6I$N$H$3$m!"%W%m%0%i%`$G4hD%$i$;$k$Y$-$+!"(B
> $B@_Dj$N<jCJ$r$9$k$Y$-$+$H$$$&=j$J$N$G$9$+$M$'!#(B

Dir $B$K$h$kJQ49$O!"%W%m%0%i%`$rJQ$JJ}8~$K$,$s$P$i$;$k$N$G$O$J(B
$B$$$G$7$g$&$+!#(B

Windows $B$+$I$&$+$r>r7oH=CG$9$k$H$+!"5UJQ49$,I,MW$K$J$k$H$+!#(B

> # $B$D$^$k$H$3$m!"Nc30$,=P$?;~$N=hM}$NMxJX@-$+(B

$B5UJQ49$,2DG=$G$"$k$h$&$J>l9g$K$O!"JQ49$7$F$bLdBj$,$J$$$N$+$b(B
$B$7$l$^$;$s!#$=$&$$$&0UL#$G!"$3$NLdBj$rJQ49$GNc30$,=P$?$H$-$N(B
$BLdBj$H$$$&$H$i$($+$?$O$"$j$($k$G$7$g$&!#(B

$B$7$+$7!";d$O!"$=$b$=$bJQ49$9$k$N$,LdBj$@$H$H$i$($F$$$^$9!#(B
Posted by NARUSE, Yui (Guest)
on 23.07.2008 20:02
(Received via mailing list)
$B@.@%$G$9!#(B

>
> Windows $B$G(B Unicode $B$J%U%!%$%kL>$r07$&$H$-$@$H$7$F$b!"$=$N=q(B
> $B$-J}$H$7$F!"%]!<%?%V%k$K$J$i$J$$=q$-J}$rDs0F$9$k$N$O$h$/$J$$(B
> $B$s$8$c$J$$$G$7$g$&$+!#(B
>
> internal_encoding, external_encoding $B$,Lr$KN)$D%"%W%j%1!<%7%g(B
> $B%s$N6qBNE*$JNc$C$F$J$$$s$G$7$g$&$+(B?

$BA[Dj$H$7$F$O!"(BUnix $B7O$G%U%!%$%k%7%9%F%`$N%(%s%3!<%G%#%s%0$,(B
locale $B$H0[$J$k>l9g$G$9!#(B
$B$3$N>l9g!"(BUnix 
$B7O$J$N$G%U%!%$%k%7%9%F%`>e$N%Q%9J8;zNs$OJQ49$5$l$:!"(B
$B$=$N0lJ}$G%U%!%$%k%7%9%F%`$N%(%s%3!<%G%#%s%0$,%;%C%H$5$l$^$9!#(B
$B$3$N(B string $B$r07$&(B force_encoding 
$B$9$kI,MW$,$"$k$3$H$r7y$$$^$7$?!#(B

file $B$N(B open $B$N>l9g!"(B
UTF-8 $B%m%1!<%k$K$F(B Shift_JIS $B$N%F%-%9%H$rFI$`>l9g$K!"(B
  open("sjis.txt"){|f| puts f.read.force_encoding("UTF-8") }
$B$H$9$k$N$G$O$J$/!"(B
  open("sjis.txt", "r:sjis"){|f| puts f.read }
$B$H$7$?J}$,%9%^!<%H$J$N$G$9$,!"$3$l$HF1MM$K(B

Shift_JIS $B%m%1!<%k$K$F(B UTF-8 $B$J%U%!%$%k%7%9%F%`$N>l9g!"(B
  opendir("."){|dir| puts dir.read.force_encoding("UTF-8") }
$B$h$j$b(B
  opendir(".", :external_encoding=>"UTF-8"){|dir| puts dir.read }
$B$H$7$?J}$,%9%^!<%H$G$"$m$&$H9M$($^$7$?!#(B


$B$^$!!"EDCf$5$s$N;XE&$G5$IU$$$?$N$G$9$,!"(B
filesystem $B$H0[$J$k(B encoding $B$r;}$C$F$$$k$,@5$7$$(Bpath 
$B$N(B string $B$r!"(B
$BB>$N(B FS $B7O$N(B API $B$K$D$C$3$s$@>l9g$OG:$^$7$/!"(B
$B0z?t$N(B string $B$r(B filesystem encoding $B$K<+F0JQ49!"(B
$B$^$?$O(B filesystem encoding 
$B$H0[$J$k>l9g$ONc30!"$J$s$F$3$H$r$9$k$H!"(B
Unix $B7O$G$O$3$N%1!<%9$GHa$7$$$3$H$K$J$j$^$9!#(B

$BK\Ev$O(B dir $B$G$J$/!"$=$N(B filesystem $B$K(B
external encoding $B$r%;%C%H$7$J$$$H$$$1$J$$$s$@$m$&$J!#(B

$B$^$!!"$3$l$K4X$7$F$O$3$N<j$N<+F0JQ49$rD|$a$l$P$$$$$N$G$9$,!#(B

Tanaka Akira wrote:
> Windows $B$G$O(B UTF-8 $B$J$b$N$rJV$9%*%W%7%g%s$r2>$K(B
> :native_filename=>true $B$H$9$k$H!"0J2<$N$h$&$K=q$1$^$9!#(B
> 
> % ruby -e '
> Dir.open(".", :native_filename=>true) {|d|
>   while n = d.read
>     p [File.size(n), n]
>   end
> }'

$B$d$C$HEDCf$5$s$N0U?^$7$?LdBjE@$,M}2r$G$-$^$7$?!#(B
$B$4;XE&$N2]Bj$O6D$kDL$j$G!"3N$+$K2r7h:v$O!"(B
$B!VL5JQ49$N%Q%9$K3NEY$N9b$$%(%s%3!<%G%#%s%0$r$D$1$F$rJV$9(B API 
$B$rMQ0U$9$k!W(B
$B$,%Y%9%H$G$7$g$&!#(B

> $B$3$N$h$&$K!"7k6I!"%U%!%$%kL>$r3N<B$K07$&$N$KI,MW$J5!9=$O!"3N(B
> $B<B$K%U%!%$%k$rF1Dj$G$-$k%U%!%$%kL>$rF@$k$3$H$G!"J8;z%3!<%I$N(B
> $BJQ49$O<YKb$G$9!#(B

$BEDCf$5$s$NG'<1$G$O!"(B:external_encoding/:internal_encoding 
$B$O!"(B
$B%U%!%$%k%Q%9$NJQ49$N$?$a$N5!9=$G$"$k!"$H$J$C$F$$$k$h$&$K;W$$$^$9!#(B

$B$o$?$7$NG'<1$G$O0J2<$NDL$j$K$J$C$F$$$^$9!#(B
:external_encoding : 
$B%U%!%$%k%7%9%F%`$N%(%s%3!<%G%#%s%0$r6/@)E*$K;XDj$9$k5!9=(B
:internal_encoding : $B<+F0JQ49$N$?$a$N5!9=(B
$B$J$N$G!"$3$A$i$G!"(B
:external_encoding : $B%7%9%F%`%M%$%F%#%V$N%(%s%3!<%G%#%s%0$r;XDj(B 
($B8=:_$O$J$$(B)
:internal_encoding : $B<+F0JQ49$5$;$J$$(B
$B$H;XDj$9$l$P!"(B
$B!VL5JQ49$N%Q%9$K3NEY$N9b$$%(%s%3!<%G%#%s%0$r$D$1$F$rJV$9(B API 
$B$rMQ0U$9$k!W(B
$B$O0l1~<B8=$G$-$^$9!#(B


$B$A$J$_$K!"(BWindows $B%U%!%$%k%Q%9$r(B FS 
$B$KEO$7$?>l9g$NF0:n$NM=Dj$r=q$$$F$*$/$H!"(B
US-ASCII$B!"(BASCII-8BIT $B5Z$S(B Unicode $B7O(B -> UTF-16LE 
$B$K$7$F(B Unicode API $B$KEO$9(B
locale -> ANSI API $B$KEO$9(B or UTF-16LE $B$KJQ49$7$F$+$i(B Unicode 
API $B$KEO$9(B
$B$=$l0J30(B -> UTF-16LE$B$K<+F0JQ49$7$F(B Unicode API or $BNc30(B 
or $B$=$N$^$^(B ANSI

$BLdBj$O$=$l0J30$G!"(B
$B<+F0JQ49$9$k$H(B Microsoft CodePage 
$B0J30$+$iJQ49$9$k$H%^%C%T%s%0$N0c$$$G$O$^$k2DG=@-$,(B
$B9b$$$N$G(B MSCP $B$G$J$$>l9g$+!"$^$?$O(B locale 
$B0J30$G$ONc30$r=P$7$?$$$N$G$9$,!"(B
$B$=$l$r$d$k$H(B Unix 
$B$N>l9g$GHa$7$$;W$$$r$9$k$N$GG:$^$7$/;W$C$F$$$k$H$3$m$G$9!#(B
Posted by Tanaka Akira (Guest)
on 23.07.2008 22:08
(Received via mailing list)
In article <488771FD.4020800@airemix.jp>,
  "NARUSE, Yui" <naruse@airemix.jp> writes:

> $BA[Dj$H$7$F$O!"(BUnix $B7O$G%U%!%$%k%7%9%F%`$N%(%s%3!<%G%#%s%0$,(B
> locale $B$H0[$J$k>l9g$G$9!#(B
> $B$3$N>l9g!"(BUnix $B7O$J$N$G%U%!%$%k%7%9%F%`>e$N%Q%9J8;zNs$OJQ49$5$l$:!"(B
> $B$=$N0lJ}$G%U%!%$%k%7%9%F%`$N%(%s%3!<%G%#%s%0$,%;%C%H$5$l$^$9!#(B
> $B$3$N(B string $B$r07$&(B force_encoding $B$9$kI,MW$,$"$k$3$H$r7y$$$^$7$?!#(B

$B$J$k$[$I!#(B

>   opendir(".", :external_encoding=>"UTF-8"){|dir| puts dir.read }
> $B$H$7$?J}$,%9%^!<%H$G$"$m$&$H9M$($^$7$?!#(B

$B>e5-$NNc$G$O(B puts $B$7$+$7$F$$$^$;$s!#(B
$B$=$N$h$&$KI=<($9$k$@$1$G$"$l$P;HMQ$G$-$^$9$,!"(Bopen $B$J$I$NA`(B
$B:n$O$G$-$J$$$o$1$G$9$h$M!#(B

$BI=<($7$+9T$o$J$$%"%W%j%1!<%7%g%s$C$F$I$N$/$i$$$"$k$s$G$7$g$&$+(B?

Dir $B$rI=<(@lMQ$K$7$F$7$^$&%*%W%7%g%s$O!"E,@Z$H$O;W$($^$;$s!#(B

Dir $B$N(B :external_encoding $B$H(B :internal_encoding 
$B$O:o=|$7$^$;(B
$B$s$+(B?

> $B$^$!!"EDCf$5$s$N;XE&$G5$IU$$$?$N$G$9$,!"(B
> filesystem $B$H0[$J$k(B encoding $B$r;}$C$F$$$k$,@5$7$$(Bpath $B$N(B string $B$r!"(B
> $BB>$N(B FS $B7O$N(B API $B$K$D$C$3$s$@>l9g$OG:$^$7$/!"(B
> $B0z?t$N(B string $B$r(B filesystem encoding $B$K<+F0JQ49!"(B
> $B$^$?$O(B filesystem encoding $B$H0[$J$k>l9g$ONc30!"$J$s$F$3$H$r$9$k$H!"(B
> Unix $B7O$G$O$3$N%1!<%9$GHa$7$$$3$H$K$J$j$^$9!#(B

Unix $B$N%U%!%$%kL>$OJ8;zNs$G$J$/%P%$%HNs$J$N$G!"J8;zNs$@$H;W$C(B
$B$F07$($PL5MQ$KLdBj$r8F$S9~$_$^$9$M!#(B

> $BK\Ev$O(B dir $B$G$J$/!"$=$N(B filesystem $B$K(B
> external encoding $B$r%;%C%H$7$J$$$H$$$1$J$$$s$@$m$&$J!#(B

$B$3$l$O0U?^$,$h$/$o$+$j$^$;$s!#(B

> $B$d$C$HEDCf$5$s$N0U?^$7$?LdBjE@$,M}2r$G$-$^$7$?!#(B
> $B$4;XE&$N2]Bj$O6D$kDL$j$G!"3N$+$K2r7h:v$O!"(B
> $B!VL5JQ49$N%Q%9$K3NEY$N9b$$%(%s%3!<%G%#%s%0$r$D$1$F$rJV$9(B API $B$rMQ0U$9$k!W(B
> $B$,%Y%9%H$G$7$g$&!#(B

$B$($'!#(B

> $BEDCf$5$s$NG'<1$G$O!"(B:external_encoding/:internal_encoding $B$O!"(B
> $B%U%!%$%k%Q%9$NJQ49$N$?$a$N5!9=$G$"$k!"$H$J$C$F$$$k$h$&$K;W$$$^$9!#(B

$B$O$$!#8=;~E@$N%3!<%I$rFI$s$@7k2L!"$=$N$h$&$K;W$$$^$7$?!#(B

> $B$o$?$7$NG'<1$G$O0J2<$NDL$j$K$J$C$F$$$^$9!#(B
> :external_encoding : $B%U%!%$%k%7%9%F%`$N%(%s%3!<%G%#%s%0$r6/@)E*$K;XDj$9$k5!9=(B
> :internal_encoding : $B<+F0JQ49$N$?$a$N5!9=(B
> $B$J$N$G!"$3$A$i$G!"(B
> :external_encoding : $B%7%9%F%`%M%$%F%#%V$N%(%s%3!<%G%#%s%0$r;XDj(B ($B8=:_$O$J$$(B)
> :internal_encoding : $B<+F0JQ49$5$;$J$$(B
> $B$H;XDj$9$l$P!"(B
> $B!VL5JQ49$N%Q%9$K3NEY$N9b$$%(%s%3!<%G%#%s%0$r$D$1$F$rJV$9(B API $B$rMQ0U$9$k!W(B
> $B$O0l1~<B8=$G$-$^$9!#(B

$B$d$j$?$$$3$H$KBP$7$F$=$l$O1*1s$G$O$"$j$^$;$s$+(B?

$B$=$l$K!";XDj$K<:GT$9$k$H(B Dir $B$OI=<(@lMQ$K$J$C$F$7$^$&$o$1$G(B
$B$9$h$M!#$=$s$J2DG=@-$r$3$l$_$h$,$7$KDs6!$9$k$N$ONI$/$J$$$N$G(B
$B$O$J$$$G$7$g$&$+!#(B

> $B$A$J$_$K!"(BWindows $B%U%!%$%k%Q%9$r(B FS $B$KEO$7$?>l9g$NF0:n$NM=Dj$r=q$$$F$*$/$H!"(B
> US-ASCII$B!"(BASCII-8BIT $B5Z$S(B Unicode $B7O(B -> UTF-16LE $B$K$7$F(B Unicode API $B$KEO$9(B
> locale -> ANSI API $B$KEO$9(B or UTF-16LE $B$KJQ49$7$F$+$i(B Unicode API $B$KEO$9(B
> $B$=$l0J30(B -> UTF-16LE$B$K<+F0JQ49$7$F(B Unicode API or $BNc30(B or $B$=$N$^$^(B ANSI
>
> $BLdBj$O$=$l0J30$G!"(B
> $B<+F0JQ49$9$k$H(B Microsoft CodePage $B0J30$+$iJQ49$9$k$H%^%C%T%s%0$N0c$$$G$O$^$k2DG=@-$,(B
> $B9b$$$N$G(B MSCP $B$G$J$$>l9g$+!"$^$?$O(B locale $B0J30$G$ONc30$r=P$7$?$$$N$G$9$,!"(B
> $B$=$l$r$d$k$H(B Unix $B$N>l9g$GHa$7$$;W$$$r$9$k$N$GG:$^$7$/;W$C$F$$$k$H$3$m$G$9!#(B

Unix $B$N%U%!%$%kL>$O%P%$%HNs$J$N$G!"(Bstring $B$N%(%s%3!<%G%#%s%0(B
$B$OL5;k$7$F%P%$%HNs$r$=$N$^$^;H$&$Y$-$G$9!#%(%s%3!<%G%#%s%0$K(B
$B$h$C$FNc30$K$9$k$N$OH?BP$G$9!#(B

Windows $B$N%U%!%$%kL>$OJ8;zNs$@$H;W$&$N$G!"(Blocale $B0J30$OA4It(B
UTF-16LE $B$KJQ49$7$F$7$^$($P$$$$$N$G$O$J$$$+$H;W$C$F$$$^$9!#(B
Posted by Tanaka Akira (Guest)
on 23.07.2008 23:03
(Received via mailing list)
In article <87d4l4s6te.fsf@fsij.org>,
  Tanaka Akira <akr@fsij.org> writes:

>> Shift_JIS $B%m%1!<%k$K$F(B UTF-8 $B$J%U%!%$%k%7%9%F%`$N>l9g!"(B
>>   opendir("."){|dir| puts dir.read.force_encoding("UTF-8") }
>> $B$h$j$b(B
>>   opendir(".", :external_encoding=>"UTF-8"){|dir| puts dir.read }
>> $B$H$7$?J}$,%9%^!<%H$G$"$m$&$H9M$($^$7$?!#(B
>
> $B>e5-$NNc$G$O(B puts $B$7$+$7$F$$$^$;$s!#(B
> $B$=$N$h$&$KI=<($9$k$@$1$G$"$l$P;HMQ$G$-$^$9$,!"(Bopen $B$J$I$NA`(B
> $B:n$O$G$-$J$$$o$1$G$9$h$M!#(B

$B$*$C$H!"(B:external_encoding $B$@$1$N;XDj$J$i%P%$%HNs$OJQ49$5$l(B
$B$J$$$N$G(B open $B$H$+$b$G$-$^$9$M!#(B

:internal_encoding $B$r;XDj$9$k$H$@$a$G$9$,!#(B

> Dir $B$N(B :external_encoding $B$H(B :internal_encoding $B$O:o=|$7$^$;(B
> $B$s$+(B?

:internal_encoding $B$K$D$$$F$O!":o=|$7$?$[$&$,$$$$$H$$$&$N$O(B
$BJQ$o$j$^$;$s!#(B

$B$H$3$m$G!"(BWindows $B$G(B :external_encoding $B$K(B Unicode 
$B$G$b(B
locale $B$G$b$J$$(B encoding $B$r;XDj$7$?$i$I$&$J$k$s$G$9$,(B?
Posted by NARUSE, Yui (Guest)
on 24.07.2008 18:50
(Received via mailing list)
Tanaka Akira wrote:
> 
>>   opendir(".", :external_encoding=>"UTF-8"){|dir| puts dir.read }
> Dir $B$N(B :external_encoding $B$H(B :internal_encoding $B$O:o=|$7$^$;(B
> $B$s$+(B?

[ruby-dev:35644] $B$NDL$j!"(B:external_encoding $B$N$_$@$H(B 
force_encoding $B$K$J$j$^$9!#(B

:external_encoding/:inernal_encoding $BJ}<0$@$H!"(BWindows 
$B4D6-MQ$K(B
:internal_encoding $B$,I,MW$G$9!#(B
$B$D$^$j!"%G%U%)%k%H$G(B locale 
$B$,F~$C$F$$$F!"$3$3$G<+F0JQ49$r$7$F$$$^$9!#(B

$B$`$7$m!":G$b;H$o$l$k$N$O$3$A$i$J$N$+$J!#(B

>> $B$^$!!"EDCf$5$s$N;XE&$G5$IU$$$?$N$G$9$,!"(B
>> filesystem $B$H0[$J$k(B encoding $B$r;}$C$F$$$k$,@5$7$$(Bpath $B$N(B string $B$r!"(B
>> $BB>$N(B FS $B7O$N(B API $B$K$D$C$3$s$@>l9g$OG:$^$7$/!"(B
>> $B0z?t$N(B string $B$r(B filesystem encoding $B$K<+F0JQ49!"(B
>> $B$^$?$O(B filesystem encoding $B$H0[$J$k>l9g$ONc30!"$J$s$F$3$H$r$9$k$H!"(B
>> Unix $B7O$G$O$3$N%1!<%9$GHa$7$$$3$H$K$J$j$^$9!#(B
> 
> Unix $B$N%U%!%$%kL>$OJ8;zNs$G$J$/%P%$%HNs$J$N$G!"J8;zNs$@$H;W$C(B
> $B$F07$($PL5MQ$KLdBj$r8F$S9~$_$^$9$M!#(B

$B$"$!!"$J$k$[$I!#(B

> $B$=$l$K!";XDj$K<:GT$9$k$H(B Dir $B$OI=<(@lMQ$K$J$C$F$7$^$&$o$1$G(B
> $B$9$h$M!#$=$s$J2DG=@-$r$3$l$_$h$,$7$KDs6!$9$k$N$ONI$/$J$$$N$G(B
> $B$O$J$$$G$7$g$&$+!#(B

$B$3$l8+$h$,$7$K$J$i$J$$DxEY$K$O;H$$$E$i$/$7$?$D$b$j$G$9!"(B17$BJ8;z$G$9$7!#(B
$B4pK\E*$K$O;XDj$7$J$/$F$$$$$O$:$G$9$7!#(B
(Unix $B$d(B Mac OS X $B$G$O:G=i$+$i@8(B+locale$B$@$+$i(B)


> Unix $B$N%U%!%$%kL>$O%P%$%HNs$J$N$G!"(Bstring $B$N%(%s%3!<%G%#%s%0(B
> $B$OL5;k$7$F%P%$%HNs$r$=$N$^$^;H$&$Y$-$G$9!#%(%s%3!<%G%#%s%0$K(B
> $B$h$C$FNc30$K$9$k$N$OH?BP$G$9!#(B
> 
> Windows $B$N%U%!%$%kL>$OJ8;zNs$@$H;W$&$N$G!"(Blocale $B0J30$OA4It(B
> UTF-16LE $B$KJQ49$7$F$7$^$($P$$$$$N$G$O$J$$$+$H;W$C$F$$$^$9!#(B

$B$J$k$[$I!"$=$N6hJL$OL@2w$G$9$M!#(B
$B$3$A$i$O$=$l$G;?@.$G$9!#(B

> $B$H$3$m$G!"(BWindows $B$G(B :external_encoding $B$K(B Unicode $B$G$b(B
> locale $B$G$b$J$$(B encoding $B$r;XDj$7$?$i$I$&$J$k$s$G$9$,(B?

Windows $B$G$O(B :external_encoding $B$O(B Unicode 
$B7O$N$_$G$9$+$M!#(B
$B!V(BWindows $B$N%U%!%$%kL>$OJ8;zNs!W$H$$$&$N$O!"(BUnicode 
$BJ8;z$N;v$G$7$g$&$+$i!#(B

Unicode $B0J30$N(B :external_encoding $B$@$HNc30$G$$$$$N$+$J!#(B
Windows 
$B$N%U%!%$%kL>$,%P%$%HNs$K$J$k%1!<%9$,$b$7B8:_$9$k$J$i$PI,MW$J$N$G$7$g$&$,!"(B
$B0JA0$N(B samba $B$NOCEy$N46$8$G$OI,MW$J$5$=$&$G$7$?$7!#(B
Posted by Tanaka Akira (Guest)
on 25.07.2008 04:54
(Received via mailing list)
In article <4888B29D.7030009@airemix.jp>,
  "NARUSE, Yui" <naruse@airemix.jp> writes:

> :external_encoding/:inernal_encoding $BJ}<0$@$H!"(BWindows $B4D6-MQ$K(B
> :internal_encoding $B$,I,MW$G$9!#(B
> $B$D$^$j!"%G%U%)%k%H$G(B locale $B$,F~$C$F$$$F!"$3$3$G<+F0JQ49$r$7$F$$$^$9!#(B
>
> $B$`$7$m!":G$b;H$o$l$k$N$O$3$A$i$J$N$+$J!#(B

$B$h$/$o$+$i$+$C$?$N$G$9$,!"6qBNE*$K(B :internal_encoding $B$O$I$&(B
$B;H$&$N$G$9$+(B?
Posted by NARUSE, Yui (Guest)
on 26.07.2008 08:17
(Received via mailing list)
$B@.@%$G$9!#(B

Tanaka Akira wrote:
> $B;H$&$N$G$9$+(B?
Windows $B$G(B W $B7O(B API $B$,;H$o$l$k$N$rA0Ds$H$7$F(B 
($B:#$O$^$@(B A $B7O(B)$B!"(B

Dir.foreach(".", :internal_encoding => "CP51932") do |fn|
  p [fn, File.size(fn)] # Windows $B$J$N$G%Q%9<+F0JQ49(B
end

$B$H$+$G$7$g$&$+!#(B
Posted by Tanaka Akira (Guest)
on 26.07.2008 10:56
(Received via mailing list)
In article <488AC157.7090203@airemix.jp>,
  "NARUSE, Yui" <naruse@airemix.jp> writes:

> Windows $B$G(B W $B7O(B API $B$,;H$o$l$k$N$rA0Ds$H$7$F(B ($B:#$O$^$@(B A $B7O(B)$B!"(B
>
> Dir.foreach(".", :internal_encoding => "CP51932") do |fn|
>   p [fn, File.size(fn)] # Windows $B$J$N$G%Q%9<+F0JQ49(B
> end
>
> $B$H$+$G$7$g$&$+!#(B

$B$U$`!"(BCP51932 $B$G$9$+!#;HMQIQEY$,Dc$=$&$G$9$M!#(B
$B$b$C$HIaDL$N?M$,;H$$$=$&$JNc$C$F$"$j$^$9$+(B?

$B$7$+$7!"$d$O$j(B :internal_encoding $B$r:o=|$7$?$[$&$,$$$$$H;W$$(B
$B$^$9!#(B

$B$^$:!"(Bunix $B$G(B :internal_encoding 
$B$r;H$C$FJQ49$9$k$H!"%U%!%$(B
$B%kL>$H$7$F$N%P%$%HNs$,2u$l$F!"(Bopen $BEy$NA`:n$,=PMh$J$/$J$j$^(B
$B$9!#0JA0!"(B[ruby-dev:34933] $B$G(B

| $B%U%!%$%kL>$G0lHV=EMW$J$N$O!"%U%!%$%k$rF1Dj$G$-$k$H$$$&@-<A$G(B
| $B$O$J$$$G$7$g$&$+!#%U%!%$%kL>$rFI$a$k$H$$$&$N$O$=$N<!$K$/$k@-(B
| $B<A$@$H;W$$$^$9!#(B

$B$H=q$-$^$7$?$,!"(B:internal_encoding $B$r;H$&$H!"%U%!%$%k$rF1Dj(B
$B$G$-$J$/$J$j$^$9!#$3$l$O5v$7Fq$$@-<A$G$9!#(B

$B$^$?(B windows 
$B$G$b!";XDj$9$k%(%s%3!<%G%#%s%0$K$h$C$FLdBj$,$"$C(B
$B$?$j$J$+$C$?$j$9$k$H$$$&$3$H$,$"$j$^$9!#@8$N%U%!%$%kL>$H;XDj(B
$B$7$?%(%s%3!<%G%#%s%0$H$NJQ49$G(B round trip $B$9$k$+$I$&$+$,LdBj(B
$B$G$9$,!"$3$l$OCN$C$F$$$J$$$HH=CG$,:$Fq$G$9!#$7$+$b!"CN$i$J$$(B
$B$R$H$,;n9T:x8m$7$FD4$Y$F$_$h$&$H;W$C$F$b!"(B:internal_encoding
$B$r;H$&$H!"JQ4985$NJ8;zNs$r3NG'$G$-$^$;$s$+$i!";n9T:x8m$9$k$3(B
$B$H<+BN$,:$Fq$G$9!#(B

$B$"$H!"JQ49$K<:GT$7$?$H$-$K%U%!%$%kL>$,<:$o$l$k!"$H$$$&E@$b$"(B
$B$j$^$9!#(BDir#read $BFb$G!"(Breaddir(3) 
$B$K@.8y$7$?8e$KJQ49$r9T$&$?(B
$B$a!"$=$3$GNc30$,5/$-$l$P(B readdir $B$,JV$7$?%U%!%$%kL>$,<:$o$l(B
$B$^$9!#(B

$B$3$N$h$&$JLdBj$r9M$($k$H(B :internal_encoding $B$KAjEv$9$k$3$H$r(B
$B$d$j$?$1$l$P!"(BDir $B<+BN$8$c$J$/$F!"(BDir $B$r;H$&B&$,(B
String#encode $B$G9T$&$H$$$&$N$,$$$$$s$8$c$J$$$G$7$g$&$+!#(B

$B$D$^$j!"(B
  Dir.open(dir, :internal_encoding=>enc) {|d|
    d.read
  }
$B$NBe$o$j$K!"(B
  Dir.open(dir) {|d|
    d.read.encode(enc)
  }
$B$H$9$k!"$H$$$&$o$1$G$9!#(B

$B$3$&$9$l$P!"8F$S=P$7$?B&$O!"JQ4985$NJ8;zNs$rCN$k$3$H$,$G$-!"(B
$BJQ49$G2?$,5/$3$k$N$+$rD4$Y$k$3$H$,=PMh$^$9!#$^$?!"JQ49$K32$,(B
$B$"$k$3$H$rCN$C$F!"JQ49$;$:$K%U%!%$%kL>$r;H$&$h$&$K$J$l$P!"(B
unix $B$G$b(B windows $B$G$bF0:n$9$k%W%m%0%i%`$,=q$1$k$h$&$K$J$j$^(B
$B$9!#(B

$B$H$$$&$o$1$G!"%Q%C%A$r=q$$$F$_$^$7$?!#(B

$B$J$*!"(BDir.open $B$N$H$3$m$G(B (unix $B>e$G$b(B) 
$B%Q%9$rJQ49$9$k$3$H$,(B
$B$"$C$F!"(BDir.open $B=PMh$k$Y$-$b$N$,=PMh$J$$$3$H$,$"$C$?$N$G!"(B
$B$=$3$b:o=|$7$F$"$j$^$9!#(B

% svn diff --diff-cmd diff -x '-u -p'
Index: dir.c
===================================================================
--- dir.c  (revision 18220)
+++ dir.c  (working copy)
@@ -291,7 +291,6 @@ VALUE rb_cDir;
 struct dir_data {
     DIR *dir;
     char *path;
-    rb_encoding *intenc;
     rb_encoding *extenc;
 };

@@ -315,7 +314,6 @@ dir_s_alloc(VALUE klass)

     dirp->dir = NULL;
     dirp->path = NULL;
-    dirp->intenc = NULL;
     dirp->extenc = NULL;

     return obj;
@@ -332,66 +330,37 @@ dir_initialize(int argc, VALUE *argv, VA
 {
     struct dir_data *dp;
     static rb_encoding *fs_encoding;
-    rb_encoding  *intencoding, *extencoding;
+    rb_encoding  *extencoding;
     VALUE dirname, opt;
-    static VALUE sym_intenc, sym_extenc;
+    static VALUE sym_extenc;

-    if (!sym_intenc) {
-  sym_intenc = ID2SYM(rb_intern("internal_encoding"));
+    if (!sym_extenc) {
   sym_extenc = ID2SYM(rb_intern("external_encoding"));
   fs_encoding = rb_filesystem_encoding();
     }

-    intencoding = NULL;
     extencoding = fs_encoding;
     rb_scan_args(argc, argv, "11", &dirname, &opt);

     if (!NIL_P(opt)) {
-        VALUE v, extenc=Qnil, intenc=Qnil;
+        VALUE v, extenc=Qnil;
         opt = rb_convert_type(opt, T_HASH, "Hash", "to_hash");

-        v = rb_hash_aref(opt, sym_intenc);
-        if (!NIL_P(v)) intenc = v;
         v = rb_hash_aref(opt, sym_extenc);
         if (!NIL_P(v)) extenc = v;

   if (!NIL_P(extenc)) {
       extencoding = rb_to_encoding(extenc);
-      if (!NIL_P(intenc)) {
-    intencoding = rb_to_encoding(intenc);
-    if (extencoding == intencoding) {
-        rb_warn("Ignoring internal encoding '%s': it is identical to 
external encoding '%s'",
-          RSTRING_PTR(rb_inspect(intenc)),
-          RSTRING_PTR(rb_inspect(extenc)));
-        intencoding = NULL;
-    }
-      }
-  }
-  else if (!NIL_P(intenc)) {
-      rb_raise(rb_eArgError, "External encoding must be specified when 
internal encoding is given");
   }
     }

     FilePathValue(dirname);
-    {
-  rb_encoding  *dirname_encoding = rb_enc_get(dirname);
-  if (rb_usascii_encoding() != dirname_encoding
-      && rb_ascii8bit_encoding() != dirname_encoding
-#if defined __APPLE__
-      && rb_utf8_encoding() != dirname_encoding
-#endif
-      && extencoding != dirname_encoding) {
-      if (!intencoding) intencoding = dirname_encoding;
-      dirname = rb_str_transcode(dirname, 
rb_enc_from_encoding(extencoding));
-  }
-    }

     Data_Get_Struct(dir, struct dir_data, dp);
     if (dp->dir) closedir(dp->dir);
     if (dp->path) xfree(dp->path);
     dp->dir = NULL;
     dp->path = NULL;
-    dp->intenc = intencoding;
     dp->extenc = extencoding;
     dp->dir = opendir(RSTRING_PTR(dirname));
     if (dp->dir == NULL) {
@@ -457,9 +426,6 @@ static VALUE
 dir_enc_str(VALUE str, struct dir_data *dirp)
 {
     rb_enc_associate(str, dirp->extenc);
-    if (dirp->intenc) {
-        str = rb_str_transcode(str, 
rb_enc_from_encoding(dirp->intenc));
-    }
     return str;
 }
Posted by NARUSE, Yui (Guest)
on 27.07.2008 05:52
(Received via mailing list)
$B@.@%$G$9!#(B

Tanaka Akira wrote:
> $B$U$`!"(BCP51932 $B$G$9$+!#;HMQIQEY$,Dc$=$&$G$9$M!#(B
> $B$b$C$HIaDL$N?M$,;H$$$=$&$JNc$C$F$"$j$^$9$+(B?

Windows $B>e$G$N(B Dir.open $B$N%G%U%)%k%H$O!"(B
:external_encoding = UTF-8
:internal_encoding = CP932
$B$J$N$G!"$3$A$i$,:G$b;HMQIQEY$N9b$$Nc$G$7$g$&$+!#(B
$B%G%U%)%k%H$N@_Dj$r!V;H$&!W$H8@$&$N$+$I$&$+$OHyL/$J$H$3$m$G$9$,!#(B

$B$C$F!"$b$7$+$7$F!"EDCf$5$s$NA[Dj$@$H!"(BWindows $B$G$O!"(B
:external_encoding $B$K(B locale 
$B$r;XDj2DG=$C$F$3$H$K$J$C$F$^$9!)(B
:external_encoding $B$NItJ,$G$O7gMn$NH/@8$9$kJQ49$O(B
$B9T$o$J$$$D$b$j$@$C$?$N$G$9$,!"(B

> 
> $B$H=q$-$^$7$?$,!"(B:internal_encoding $B$r;H$&$H!"%U%!%$%k$rF1Dj(B
> $B$G$-$J$/$J$j$^$9!#$3$l$O5v$7Fq$$@-<A$G$9!#(B

$B%U%!%$%k$N%Q%9$,%P%$%HNs$G$"$k(B Unix $B$G$O!"(B
$B$=$N$h$&$JA`:n$O6KNO;H$$$E$i$/$9$k$Y$-!"$H$$$&<gD%$G$9$h$M!#(B
$BM}2r$O$G$-$^$9!#(B

> String#encode $B$G9T$&$H$$$&$N$,$$$$$s$8$c$J$$$G$7$g$&$+!#(B
$B;n9T:x8m$7$?$$$H$-$O(B :internal_encoding 
$B$r;H$o$J$1$l$P$$$$$G$9$h$M!#(B
$B$=$7$F!"$3$3$G;H$o$:$7$F$I$3$G;H$&$s$@$H$$$&<ALd$N2sEz$O!"(B
$B%G%U%)%k%HF0:n$G;H$&!"$K$J$j$^$9!#(B

$B$3$N$"$?$j$NLdBj$O$b$H$h$j(B Windows $B$N(B A $B7O(B API 
$B$,;}$C$F$$$kLdBj$G$9$M!#(B
$B$^$?!"(BWindows $B$K$*$$$F$O%G%U%)%k%H$G$O(B locale 
$B$NJ8;zNs$rJV$7B3$1$J$$$H(B
$B$$$1$J$$$G$7$g$&$+$i!"F($l$i$l$J$$LdBj$H$b$$$($^$9!#(B

> $B$"$H!"JQ49$K<:GT$7$?$H$-$K%U%!%$%kL>$,<:$o$l$k!"$H$$$&E@$b$"(B
> $B$j$^$9!#(BDir#read $BFb$G!"(Breaddir(3) $B$K@.8y$7$?8e$KJQ49$r9T$&$?(B
> $B$a!"$=$3$GNc30$,5/$-$l$P(B readdir $B$,JV$7$?%U%!%$%kL>$,<:$o$l(B
> $B$^$9!#(B

$B$3$NJU$O(B transcode $B$N<:GT;~$N%*%W%7%g%s3HD%$GB?>/$O!#(B

> $B$=$3$b:o=|$7$F$"$j$^$9!#(B
$B$3$N%Q%C%A$@$H!"(Breaddir $B$,2?$rJV$9$+$K0MB8$7$^$9$,!"(B
Windows $B4D6-$K$*$$$F(B UTF-16LE $B$+(B locale 
$B$+$I$A$i$+$7$+F@$i$l$^$;$s$h$M!#(B


$B$^$H$a$k$H!"0J2<$NF0:n$,$G$-$kI,MW$,$"$k!<$G$9$+$M!#(B

== $B%G%U%)%k%H(B
Windows: UTF-16LE -> locale $B<+F0JQ49(B
Unix: locale

== $B@8(B
Windows: UTF-8
Unix: locale

== $B6/@);XDj(B
Unix: $BG$0U$N(B encoding $B$K(B force_encoding
Posted by Tanaka Akira (Guest)
on 27.07.2008 18:13
(Received via mailing list)
In article <488BF0DF.5020208@airemix.jp>,
  "NARUSE, Yui" <naruse@airemix.jp> writes:

> Windows $B>e$G$N(B Dir.open $B$N%G%U%)%k%H$O!"(B
> :external_encoding = UTF-8
> :internal_encoding = CP932
> $B$J$N$G!"$3$A$i$,:G$b;HMQIQEY$N9b$$Nc$G$7$g$&$+!#(B
> $B%G%U%)%k%H$N@_Dj$r!V;H$&!W$H8@$&$N$+$I$&$+$OHyL/$J$H$3$m$G$9$,!#(B

$B%G%U%)%k%H$N@_Dj$O!V;H$&!W$H$O$$$($J$$$G$7$g$&!#(B

$BC1$K$=$&$$$&JQ49$,%O!<%I%3!<%I$5$l$F$$$F!"%G%U%)%k%H$G$=$NJQ(B
$B49$,F0$/$H$7$F$bLdBj$J$$$N$G!"(B:internal_encoding $B$H$$$&%*%W(B
$B%7%g%s$NB8:_0U5A$K$O$J$j$^$;$s!#(B

$B$"$H!"(BDir.open $B$,%G%U%)%k%H$G(B Windows $B$N(B Unicode 
$B$J(B API $B$r(B
($B%3!<%IJQ49$7$F(B) $B;H$&$N$+!"(Blocale $B$J(B API 
$B$r;H$&$N$+$O$h$/$o(B
$B$+$C$F$$$^$;$s$,!"8e<T$J$iJQ49$OITMW$G$7$g$&!#(B

> $B$C$F!"$b$7$+$7$F!"EDCf$5$s$NA[Dj$@$H!"(BWindows $B$G$O!"(B
> :external_encoding $B$K(B locale $B$r;XDj2DG=$C$F$3$H$K$J$C$F$^$9!)(B
> :external_encoding $B$NItJ,$G$O7gMn$NH/@8$9$kJQ49$O(B
> $B9T$o$J$$$D$b$j$@$C$?$N$G$9$,!"(B

$B$$$(!#(B[ruby-dev:35644] $B$G?R$M$F(B [ruby-dev:35652] $B$G(B

| Windows $B$G$O(B :external_encoding $B$O(B Unicode $B7O$N$_$G$9$+$M!#(B

$B$HEz$($F$$$?$@$$$?$N$G!"$?$H$($P(B UTF-8, UTF-16LE $B$J$I$O;XDj(B
$B2DG=$@$,!"(BEUC-JP $B$J$I$O;XDj$G$-$J$$$HA[Dj$7$F$$$^$9!#(B

> $B;n9T:x8m$7$?$$$H$-$O(B :internal_encoding $B$r;H$o$J$1$l$P$$$$$G$9$h$M!#(B
> $B$=$7$F!"$3$3$G;H$o$:$7$F$I$3$G;H$&$s$@$H$$$&<ALd$N2sEz$O!"(B
> $B%G%U%)%k%HF0:n$G;H$&!"$K$J$j$^$9!#(B

$B%G%U%)%k%HF0:n$NFbIt$G;H$&$H$$$&$N$O!"%f!<%6$,;XDj2DG=$J%*%W(B
$B%7%g%s$NB8:_0U5A$K$O$J$j$^$;$s!#(B

> $B$3$N$"$?$j$NLdBj$O$b$H$h$j(B Windows $B$N(B A $B7O(B API $B$,;}$C$F$$$kLdBj$G$9$M!#(B
> $B$^$?!"(BWindows $B$K$*$$$F$O%G%U%)%k%H$G$O(B locale $B$NJ8;zNs$rJV$7B3$1$J$$$H(B
> $B$$$1$J$$$G$7$g$&$+$i!"F($l$i$l$J$$LdBj$H$b$$$($^$9!#(B

$B%U%!%$%kL>$,J8;zNs$G!"%3!<%IJQ49$r9T$&8B$j!"F($l$i$l$J$$$N$O(B
$B$=$&;W$$$^$9!#(B

$B$7$+$7!"(B:internal_encoding $B$G(B Ruby 
$B$,JQ49$r9T$&$H!"LdBj$rGD(B
$B0.$9$k$N$K(B Windows $B$NCN<1$H(B Ruby 
$B$NCN<1$NN>J}$,I,MW$K$J$j$^(B
$B$9!#(B:internal_encoding $B$,$J$1$l$P!"(BWindows 
$B$NCN<1$@$1$G:Q$_(B
$B$^$9!#(B

Windows $B$N;qNA$O@$$NCf$K$"$k$G$7$g$&$7!"CN$C$F$$$k?M$b$=$l$J(B
$B$j$K$$$k$G$7$g$&!#$7$+$7!"(BRuby $B$G$NJQ49$K4X$9$kCN<1$b!"$H$J(B
$B$k$H!"Fq0WEY$,$+$J$j$"$,$k$s$8$c$J$$$G$7$g$&$+!#(B

$BF($l$i$l$J$$$+$i$H$$$C$F!":$Fq$K$7$F$$$$$H$O;W$$$^$;$s!#(B

:internal_encoding $B$NM-MQ@-$,Dc$$$H$9$l$P!"$=$&$$$&5!G=$GLd(B
$BBj$r:$Fq$K$9$k$N$O4V0c$C$F$$$k$H;W$$$^$9!#(B

> $B$3$NJU$O(B transcode $B$N<:GT;~$N%*%W%7%g%s3HD%$GB?>/$O!#(B

$B6qBNE*$K$O$I$&$9$k$s$G$7$g$&(B?

$B$?$H$($P!"(B:internal_encoding => "ISO-8859-1" $B$H;XDj$7$?>l9g(B
$B$G!"!V$"$$$&$($*!W$H$$$&%U%!%$%kL>$K=P2q$C$?;~!"$I$&$$$&CM$r(B
$BJV$9$s$G$9$+(B?

> $B$3$N%Q%C%A$@$H!"(Breaddir $B$,2?$rJV$9$+$K0MB8$7$^$9$,!"(B
> Windows $B4D6-$K$*$$$F(B UTF-16LE $B$+(B locale $B$+$I$A$i$+$7$+F@$i$l$^$;$s$h$M!#(B

readdir $B$,(B UTF-16LE 
$B$G%U%!%$%kL>$rJV$9$N$OL5M}$8$c$J$$$G$9$+(B?

Windows $B$N(B Unicode $B%U%!%$%kL>$O8=:_07$o$l$F$$$^$;$s$N$G!"(B
locale $B$N>l9g$7$+07$C$F$$$^$;$s!#(BUnicode $B%U%!%$%kL>$N<BAu$O(B
$B8e$NOC$G$9!#(B

> $B$^$H$a$k$H!"0J2<$NF0:n$,$G$-$kI,MW$,$"$k!<$G$9$+$M!#(B
>
> == $B%G%U%)%k%H(B
> Windows: UTF-16LE -> locale $B<+F0JQ49(B
> Unix: locale
>
> == $B@8(B
> Windows: UTF-8
> Unix: locale

$B$3$l$i$N$U$?$D$O!"(B[ruby-dev:35617] $B$G=R$Y$?!"%U%!%$%kL>$rJ8(B
$B;z$H$7$F@5$7$/07$($k$h$&$K$9$k@UG$$,(B
* $B%W%m%0%i%`$G$J$/!"4D6-$K$"$k(B
* $B%W%m%0%i%`<+?H$K$"$k(B
$B$H$$$&$U$?$D$NN)>l$KBP1~$9$k$b$N$G!"I,MW$G$9$7!"=EMW$G$9!#(B

> == $B6/@);XDj(B
> Unix: $BG$0U$N(B encoding $B$K(B force_encoding

$B$3$l$O$H$/$KI,MW@-$,9b$$$H$O;W$C$F$$$^$;$s!#(B
Unix $B$G$O!"$"$C$F$bLdBj$J$$$+$b$7$l$^$;$s$,!#(B
Posted by NARUSE, Yui (Guest)
on 28.07.2008 18:32
(Received via mailing list)
$B@.@%$G$9!#(B

Tanaka Akira wrote:
> $B%G%U%)%k%HF0:n$NFbIt$G;H$&$H$$$&$N$O!"%f!<%6$,;XDj2DG=$J%*%W(B
> $B%7%g%s$NB8:_0U5A$K$O$J$j$^$;$s!#(B

$B$U!<$`!#(B

> Windows $B$N(B Unicode $B%U%!%$%kL>$O8=:_07$o$l$F$$$^$;$s$N$G!"(B
> locale $B$N>l9g$7$+07$C$F$$$^$;$s!#(BUnicode $B%U%!%$%kL>$N<BAu$O(B
> $B8e$NOC$G$9!#(B

$B>e$K2C$($F$3$NN)>l$@$H3N$+$K8=>u(B :internal_encoding 
$B$OI,?\$H$O$$$$$E$i$$$G$9$M!#(B

Windows $B$N(B Unicode 
$B%U%!%$%kL>$,F~$k$^$G$K$b$&$A$g$C$H9M$($F$*$-$^$9$N$G!"(B
$B$H$j$"$($:(B [ruby-dev:35661] 
$B$N%Q%C%A$rEv$F$F$7$^$C$F$/$@$5$$$^$;$s$+!#(B

$BEvLL(B Wndows $B$G(B :enternal_encoding 
$B$r;XDj$7$h$&$H$7$?$iNc30$r(B
$BEj$2$5$;$?$$$G$9$,!"$3$l$O8e$G$d$C$F$*$-$^$9!#(B
Posted by sheepman (Guest)
on 29.07.2008 15:46
(Received via mailing list)
$B$3$s$P$s$O(B sheepman $B$G$9!#(B

On Sat, 26 Jul 2008 17:49:49 +0900
Tanaka Akira <akr@fsij.org> wrote:

> 
> $B$H$$$&$o$1$G!"%Q%C%A$r=q$$$F$_$^$7$?!#(B
> 

external_encoding $B$H$$$&L>A0$r$d$a$F!"(Bfs_encoding $B$J$I$K(B
$BJQ$($k$H$$$&$N$O$I$&$G$7$g$&$+!#(Bexternal_encoding 
$B$H$$$&L>A0$J$N$K(B
$B$=$N%G%U%)%k%HCM$,(B Encoding.default_external 
$B$H$O$^$C$?$/4X78$J$$(B
$B$H$$$&$N$O:.Mp$N85$@$H;W$$$^$9!#(B
Posted by NARUSE, Yui (Guest)
on 29.07.2008 16:02
(Received via mailing list)
$B@.@%$G$9!#(B

sheepman wrote:
> $B$=$N%G%U%)%k%HCM$,(B Encoding.default_external $B$H$O$^$C$?$/4X78$J$$(B
> $B$H$$$&$N$O:.Mp$N85$@$H;W$$$^$9!#(B

:internal_encoding $B$,>C$($?$N$b$"$C$FL>>N$NJQ99$O9M$($F$$$^$9!#(B
$B$9$C$-$j$^$H$^$l$P(B :encoding 
$B$G$b$$$$$+$J!<$H;W$C$F$$$k$N$G$9$,!#(B

$B$H$j$"$($:(B 1.9.1 $B$^$G$K$OJQ$($^$9!#(B
Posted by Tanaka Akira (Guest)
on 30.07.2008 00:31
(Received via mailing list)
In article <20080729224540.0b74397e.sh@sheepman.sakura.ne.jp>,
  sheepman <sh@sheepman.sakura.ne.jp> writes:

> external_encoding $B$H$$$&L>A0$r$d$a$F!"(Bfs_encoding $B$J$I$K(B
> $BJQ$($k$H$$$&$N$O$I$&$G$7$g$&$+!#(Bexternal_encoding $B$H$$$&L>A0$J$N$K(B
> $B$=$N%G%U%)%k%HCM$,(B Encoding.default_external $B$H$O$^$C$?$/4X78$J$$(B
> $B$H$$$&$N$O:.Mp$N85$@$H;W$$$^$9!#(B

$B$^$:(B external_encoding $B$,=<J,$KLr$KN)$D$N$+$I$&$+$r8!F$$9$k(B
$B$N$,$$$$$N$G$O$J$$$G$7$g$&$+!#(B

$BLr$KN)$?$J$$$N$G$"$l$PL>A0$K4X$7$F5DO@$9$k$^$G$b$J$/>C$;$P$$(B
$B$$$G$7$g$&!#(B
Posted by Yukihiro Matsumoto (Guest)
on 07.09.2008 00:06
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

$B$=$m$=$m(Bfeature freeze$B$,6a$$$N$G3NG'%b!<%I$G$9!#(B

In message "Re: [ruby-dev:35689] Re: non-locale filename encoding"
    on Tue, 29 Jul 2008 23:01:03 +0900, "NARUSE, Yui" 
<naruse@airemix.jp> writes:

|> external_encoding $B$H$$$&L>A0$r$d$a$F!"(Bfs_encoding $B$J$I$K(B
|> $BJQ$($k$H$$$&$N$O$I$&$G$7$g$&$+!#(Bexternal_encoding $B$H$$$&L>A0$J$N$K(B
|> $B$=$N%G%U%)%k%HCM$,(B Encoding.default_external $B$H$O$^$C$?$/4X78$J$$(B
|> $B$H$$$&$N$O:.Mp$N85$@$H;W$$$^$9!#(B
|
|:internal_encoding $B$,>C$($?$N$b$"$C$FL>>N$NJQ99$O9M$($F$$$^$9!#(B
|$B$9$C$-$j$^$H$^$l$P(B :encoding $B$G$b$$$$$+$J!<$H;W$C$F$$$k$N$G$9$,!#(B
|
|$B$H$j$"$($:(B 1.9.1 $B$^$G$K$OJQ$($^$9!#(B

$B8=>u$O(Binternal_encoding$B$,>C$($F!"(Bexternal_encoding$B$,;D$C$F$$(B
$B$k>uBV$G$9$,!"$3$l$O$3$l$G$+$^$$$^$;$s$+!)(B locale$B$H0c$&%(%s(B
$B%3!<%G%#%s%0$N$H$-$KFI$_9~$s$G$/$k%U%!%$%kL>$N%(%s%3!<%G%#%s(B
$B%0$J$N$G!"(Bencoding$B$G==J,$G$O$J$$$+$H$O;W$$$^$9$,!#(B
Posted by NARUSE, Yui (Guest)
on 08.09.2008 15:36
(Received via mailing list)
$B@.@%$G$9!#(B

Yukihiro Matsumoto wrote:
> |> $B$H$$$&$N$O:.Mp$N85$@$H;W$$$^$9!#(B
> |
> |:internal_encoding $B$,>C$($?$N$b$"$C$FL>>N$NJQ99$O9M$($F$$$^$9!#(B
> |$B$9$C$-$j$^$H$^$l$P(B :encoding $B$G$b$$$$$+$J!<$H;W$C$F$$$k$N$G$9$,!#(B
> |
> |$B$H$j$"$($:(B 1.9.1 $B$^$G$K$OJQ$($^$9!#(B
> 
> $B8=>u$O(Binternal_encoding$B$,>C$($F!"(Bexternal_encoding$B$,;D$C$F$$(B
> $B$k>uBV$G$9$,!"$3$l$O$3$l$G$+$^$$$^$;$s$+!)(B locale$B$H0c$&%(%s(B
> $B%3!<%G%#%s%0$N$H$-$KFI$_9~$s$G$/$k%U%!%$%kL>$N%(%s%3!<%G%#%s(B
> $B%0$J$N$G!"(Bencoding$B$G==J,$G$O$J$$$+$H$O;W$$$^$9$,!#(B

$B9M$($?8B$j$G$OLdBj$J$5$=$&$J$N$G(B r19246 $B$G(B :encoding 
$B$KJQ$($^$7$?!#(B