From 920478dfa4088638f30089f6e5cbe788b0acdc3d Mon Sep 17 00:00:00 2001 From: Josh Date: Thu, 1 Apr 2010 16:58:42 -0400 Subject: [PATCH] fixed parameter order in iconv_open() --- imbecile.cc | 2 +- serialize.cc | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/imbecile.cc b/imbecile.cc index cea5ff8..4bc372f 100644 --- a/imbecile.cc +++ b/imbecile.cc @@ -47,7 +47,7 @@ int main(int argc, char * argv[]) cout << "Size: " << ucs_str->size() << endl; for (int i = 0; i < ucs_str->size(); i++) { - cout << (*ucs_str)[i] << ": '" << (char) (*ucs_str)[i] << "'" << endl; + cout << dec << (*ucs_str)[i] << " (0x" << hex << (*ucs_str)[i] << "): '" << (char) ((*ucs_str)[i] & 0xFF) << "'" << endl; } return 0; diff --git a/serialize.cc b/serialize.cc index b591b2f..dedfc7a 100644 --- a/serialize.cc +++ b/serialize.cc @@ -15,10 +15,16 @@ refptr< vector > deserialize(const char * encoding, istream & in) unichar_t * outbuf = new unichar_t[buf_size]; char * outbuf_ptr; size_t chars_converted, inbytesleft = 0, outbytesleft; + const char * to_encoding; refptr< vector > ucs = new vector(); - cout << "encoding: " << encoding << endl; - iconv_t cd = iconv_open(encoding, "UCS-4"); + { + uint32_t endianness_test = 1u; + uint8_t * p = (uint8_t *) &endianness_test; + to_encoding = (*p == 1) ? "UCS-4LE" : "UCS-4BE"; + } + + iconv_t cd = iconv_open(/* to */ to_encoding, /* from */ encoding); if (cd == (iconv_t) -1) { cerr << "iconv_open() error" << endl;