Esempio n. 1
0
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
}
Esempio n. 2
0
File: riconv.c Progetto: atoulme/rjb
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
}
Esempio n. 3
0
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
}