From: Masaki Suketa Date: 2009-07-25T15:43:04+09:00 Subject: [ruby-dev:38900] rb_eval_string_protect and encoding 助田です。 rb_eval_string_protect と Encoding に関する質問です。 次のソースの実行結果の最後の行を # とするためには、どうすればいいんでしょうか? rb_eval_string_protect に渡す文字列の中にeuc-jpの文字列が含まれている とき、それが euc-jp のスクリプトとして評価してもらうにはどうすればいい のでしょうか? /* * このソースファイル自体のEncoding はeuc-jp */ #include #include #include int main(int argc, char ** argv) { int state = 0; rb_encoding *enc; RUBY_INIT_STACK; ruby_init(); ruby_init_loadpath(); rb_enc_find_index("encdb"); rb_eval_string_protect("puts RUBY_DESCRIPTION", &state); rb_eval_string_protect("p Encoding.default_internal", &state); enc = rb_enc_find("euc-jp"); if(enc) { rb_enc_set_default_internal(rb_enc_from_encoding(enc)); } rb_eval_string_protect("p Encoding.default_internal", &state); rb_eval_string_protect("p 'あいうえお'.encoding", &state); return 0; } /* 実行結果 ruby 1.9.2dev (2009-07-24 trunk 24264) [i686-linux] nil # # */ 助田 雅紀