VALUE exticonv_local_to_utf8(VALUE local_string) { #if RJB_RUBY_VERSION_CODE < 190 check_kcode(); if(RTEST(objIconvR2J)) { return rb_funcall(objIconvR2J, rb_intern("iconv"), 1, local_string); } else { return local_string; } #else VALUE cEncoding, encoding, utf8; cEncoding = rb_const_get(rb_cObject, rb_intern("Encoding")); encoding = rb_funcall(local_string, rb_intern("encoding"), 0); utf8 = rb_const_get(cEncoding, rb_intern("UTF_8")); if (encoding != utf8) { VALUE ret = rb_funcall(local_string, rb_intern("encode"), 2, utf8, encoding); #if defined(DEBUG) debug_out(local_string); debug_out(ret); #endif return ret; } else { return local_string; } #endif }
VALUE exticonv_local_to_utf8(VALUE local_string) { #if RJB_RUBY_VERSION_CODE < 190 check_kcode(); if(RTEST(objIconvR2J)) { return rb_funcall(objIconvR2J, rb_intern("iconv"), 1, local_string); } else { return local_string; } #else VALUE rb_cEncoding, encoding, sjis, eucjp, iso2022jp; rb_cEncoding = rb_const_get(rb_cObject, rb_intern("Encoding")); sjis = rb_const_get(rb_cEncoding, rb_intern("SHIFT_JIS")); eucjp = rb_const_get(rb_cEncoding, rb_intern("EUC_JP")); iso2022jp = rb_const_get(rb_cEncoding, rb_intern("ISO_2022_JP")); encoding = rb_funcall(local_string, rb_intern("encoding"), 0); if (encoding == sjis || encoding == eucjp || encoding == iso2022jp) { return rb_funcall(local_string, rb_intern("encode"), 1, rb_str_new2("utf-8")); } else { return local_string; } #endif }
VALUE exticonv_utf8_to_local(VALUE utf8_string) { #if RJB_RUBY_VERSION_CODE < 190 check_kcode(); if(RTEST(objIconvR2J)) { return rb_funcall(objIconvJ2R, rb_intern("iconv"), 1, utf8_string); } else { return utf8_string; } #else return rb_funcall(utf8_string, rb_intern("force_encoding"), 1, rb_const_get(rb_cEncoding, rb_intern("UTF_8"))); #endif }