[#47869] [Mac OS X] Dir.glob で取得したファイル名のバイト列が異なる — Watson <watson1978@...>
Ruby 2.0 までは OS X のファイル名を Dir.glob で取得したときには
7 messages
2014/01/03
[#47875] Re: [Mac OS X] Dir.glob で取得したファイル名のバイト列が異なる
— "NARUSE, Yui" <naruse@...>
2014/01/09
端的には仕様変更です。
[#47876] Re: [Mac OS X] Dir.glob で取得したファイル名のバイト列が異なる
— Watson <watson1978@...>
2014/01/09
ご返答ありがとうございます。
[#47903] Re: [ruby-cvs:51792] nobu:r44647 (trunk): socket/option.c: socket option variations — Tanaka Akira <akr@...>
2014/1/19 <nobu@ruby-lang.org>:
7 messages
2014/01/19
[#47904] Re: [ruby-cvs:51792] nobu:r44647 (trunk): socket/option.c: socket option variations
— Nobuyoshi Nakada <nobu@...>
2014/01/19
(2014/01/19 10:17), Tanaka Akira wrote:
[#47905] Re: [ruby-cvs:51792] nobu:r44647 (trunk): socket/option.c: socket option variations
— Tanaka Akira <akr@...>
2014/01/19
2014年1月19日 16:20 Nobuyoshi Nakada <nobu@ruby-lang.org>:
[#47907] Re: [ruby-cvs:51792] nobu:r44647 (trunk): socket/option.c: socket option variations
— Nobuyoshi Nakada <nobu@...>
2014/01/19
(2014/01/19 16:48), Tanaka Akira wrote:
[#47908] Re: [ruby-cvs:51792] nobu:r44647 (trunk): socket/option.c: socket option variations
— Tanaka Akira <akr@...>
2014/01/19
2014年1月19日 18:12 Nobuyoshi Nakada <nobu@ruby-lang.org>:
[#47917] Re: [ruby-changes:32633] nobu:r44712 (trunk): thread_pthread.c: get current main thread stack size — KOSAKI Motohiro <kosaki.motohiro@...>
Ruby-devに河岸をうつしました。
5 messages
2014/01/28
[#47918] Re: [ruby-changes:32633] nobu:r44712 (trunk): thread_pthread.c: get current main thread stack size
— Nobuyoshi Nakada <nobu@...>
2014/01/28
なかだです。
[#47919] Re: [ruby-changes:32633] nobu:r44712 (trunk): thread_pthread.c: get current main thread stack size
— "NARUSE, Yui" <naruse@...>
2014/01/28
スレッドのスタック情報の取得は前にまとめたことがありますが、
[ruby-dev:47890] [ruby-trunk - Bug #9409] Cygwin で "filesystem" の encoding が正しくないケース
From:
ganaware+ruby-lang-issue-tracking@...
Date:
2014-01-14 10:10:18 UTC
List:
ruby-dev #47890
チケット #9409 が Nayuta Taga によって更新されました。
Nobuyoshi Nakada wrote:
> filesystem encodingはシステムの設定を反映するので、意図通りの動作ですね。
Windows ネイティブ環境ならばそうかもしれませんが、
Cygwin 環境ですので LANG に設定されているエンコーディングに従うべきではないのでしょうか?
少なくとも LANG=ja_JP.UTF-8 の状態で
Dir.open('.').each{|item| p item.encoding }
が
#<Encoding:Windows-31J>
になるのはかなり予想外の挙動と言えると思います。
----------------------------------------
Bug #9409: Cygwin で "filesystem" の encoding が正しくないケース
https://bugs.ruby-lang.org/issues/9409#change-44287
* 作成者: Nayuta Taga
* ステータス: Open
* 優先度: Normal
* 担当者:
* カテゴリ:
* 対象バージョン:
* ruby -v: -
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
Cygwin で環境変数 LANG に設定されているエンコーディングと
システムのコードページが異なる場合
"filesystem" の encoding が正しく設定されないようです。
例えば、
* Windows 7 (日本語)
* Cygwin 環境 (CYGWIN_NT-6.1-WOW64 ****** 1.7.27(0.271/5/3) 2013-12-09 11:57 i686 Cygwin)
* 環境変数 LANG は ja_JP.UTF-8
* カレントディレクトリに「`日本語.txt`」という名前のファイルが存在
という状態で以下のコードを実行すると
```
print "LANG=#{ENV['LANG']}\n"
print "\n"
Dir.open('.').each{|item|
p item.encoding
p item
}
print "\n"
Dir.open('.',encoding: 'locale').each{|item|
p item.encoding
p item
}
print "\n"
```
例えば以下のような出力が得られます。
```
LANG=ja_JP.UTF-8
#<Encoding:Windows-31J>
"."
#<Encoding:Windows-31J>
".."
#<Encoding:Windows-31J>
"test.rb"
#<Encoding:Windows-31J>
"\x{E697}\xA5\x{E69C}\xAC\x{E8AA}\x9E.txt"
#<Encoding:UTF-8>
"."
#<Encoding:UTF-8>
".."
#<Encoding:UTF-8>
"test.rb"
#<Encoding:UTF-8>
"日本語.txt"
```
本来ならば全ての Encoding が UTF-8 であるべきだと思います。
`Init_enc_set_filesystem_encoding()` を以下のように修正すれば修正可能です。
```
Index: localeinit.c
===================================================================
--- localeinit.c (revision 44594)
+++ localeinit.c (working copy)
@@ -53,7 +53,7 @@
int idx;
#if defined NO_LOCALE_CHARMAP
# error NO_LOCALE_CHARMAP defined
-#elif defined _WIN32 || defined __CYGWIN__
+#elif defined _WIN32 && !defined __CYGWIN__
char cp[sizeof(int) * 8 / 3 + 4];
snprintf(cp, sizeof cp, "CP%d", AreFileApisANSI() ? GetACP() : GetOEMCP());
idx = rb_enc_find_index(cp);
```
--
http://bugs.ruby-lang.org/