[#44909] VRDdeClientについて — Toshiyasu Soejima <clev@...2.so-net.ne.jp>

17 messages 2008/05/11

[#44936] yamlとencoding — "Yutaka Kanemoto" <kinpoco@...>

金本と申します。

16 messages 2008/05/14

[ruby-list:44900] Re: Dir.entriesのエンコーディング (was Re: Ruby 1.9のARGVのエンコーディング)

From: "NARUSE, Yui" <naruse@...>
Date: 2008-05-07 20:19:34 UTC
List: ruby-list #44900
成瀬です、地震で興奮して眠れないのでつづき。

Dir.entries で登場する三つのエンコーディングを以下のように名づけます。
(1) path_enc 引数であるパス指定のエンコーディング
(2) fs_enc 実際のファイルシステム上のエントリのエンコーディング
(3) res_enc 結果配列内の各文字列のエンコーディング

なお、
* path_enc は実際に渡される引数でなく、
  アプリケーションが持っているパスのエンコーディング
* fs_enc は ruby 自体が知っているか locale か、オプション指定されたもの
とします。
* res_enc はアプリケーションが期待するエンコーディング

これらの状態によって [ruby-list:44892] を分類すると、

A. dirname
A.0. path_enc is 7bit
* 無変換
* force_encoding により、path_enc で res_enc を指定する手法を、
  情報欠損なしにおこなえる

A.1. path_enc == fs_enc or path_enc == ASCII-8BIT
* 無変換 (invalid でも無視)

A.2. path_enc != fs_enc
A.2.a. 自動変換
* path が path_enc において invalid
* path が path_enc から fs_enc に変換できない
A.2.b. 手動変換
* 手動変換して渡す

B. ファイルリスト
B.1. fs_enc == res_enc
* 無変換 (invalid でも CODERANGE_BROKEN だけつけて無視)

B.2. fs_enc != res_enc
B.2.a. 自動変換
* path が path_enc において invalid
* path が path_enc から fs_enc に変換できない
B.2.b. 手動変換
* そのまま受取り、map を使って変換

memo.
1. res_enc を伝える手段は path_enc でいいのか?
1.1. path_enc == res_enc != fs_enc
path_enc のエンコーディングをもって res_enc と判断するのは妥当
-> デフォルトで、結果のエンコーディングに path_enc を用いるのは妥当
1.2. path_enc != res_enc
res_enc を伝えるために path_enc を変換するのは避けたい
-> :result_encoding の必要性

2. 自動変換に失敗した際の対処
fallback proc でも渡しますかねぇ
-> transcode の対応待ち

結局のところ、無駄な変換は避け、必要な場合は fallback じゃないですかねぇ。
当面は ASCII-8BIT 指定と絡めて無変換でもらい、自力で頑張るって方向かな。

-- 
NARUSE, Yui  <naruse@airemix.jp>

In This Thread