From: Hidetoshi NAGAI Date: 2008-01-29T19:04:45+09:00 Subject: [ruby-dev:33500] Re: 現在の script encoding の値を得る方法は? 永井@知能.九工大です. From: Yukihiro Matsumoto Subject: [ruby-dev:33491] Re: 現在の script encoding の値を得る方法は? Date: Tue, 29 Jan 2008 14:27:05 +0900 Message-ID: > In message "Re: [ruby-dev:33488] 現在の script encoding の値を得る方法は?" > on Tue, 29 Jan 2008 11:19:50 +0900, Hidetoshi NAGAI writes: > |具体的な話としては,Ruby/Tk において Tk -> Ruby で文字列を返す際に > |文字列をどの encoding で返すべきかを考えたとき, > |その時点の script encoding で返す方が便利かなと考えたためです. > > ということは「その時点」というのは「そのファイル」ではなくて、 > そのメソッドの呼び出し元のencodingではないですかねえ。 あ,ごめんなさい.その通りです. require 'tk' をしたスクリプトの encoding を知りたかったのでした. tk.rb が読み込まれている時点では「そのファイル」は tk.rb の方に なっちゃいますね. > だとすると、実は現状確実に知る方法はないのです。 そうですか.困りました. require されたライブラリが require したスクリプトの encoding に合わせて処理/動作を選択するというのは 結構ありそうな話に思えたのですが... 呼出元の encoding 情報を常に保持してメソッドを呼ぶなんて コスト的に論外の話でしょうし, require された時点での require 元の情報を保持させるくらいなら それほどコストは大きくなさそうではあるけれど, autoload のときはどうすべきかとかの問題もあるし... かといって,script encoding が強い力を持っている状況で Tk の encoding_system の情報を default にしてしまうのは 少々危険な気もするし... う〜む.どうしよう.(^_^; わざわざ指定してもらわねばならないことを 増やしたくはないのですが, 「 Tk からの戻り値の encoding は Tk.encoding_system = で 明示してください. 明示がなければシステムに依存したデフォルトの Tk.encoding_system の encoding で返されます 」 とするのが妥当なところかもしれません. どなたか良いアイディアをお持ちの方はいらっしゃいませんか? また,もし上記のような対応とせざるをえないなら, Ruby の encoding -> Tcl/Tk の encoding の対応表が必要です. これを安全確実に作成し維持できるようにするために, うまい方法はないでしょうか? -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp