#include #include /* to build */ /* gcc -o tst_unicode -L /home/hugang/deve/cvs/internet/gnokii/common/ \ * -lgnokii **/ /* interface to call gnokii lib */ extern void char_encode_unicode(unsigned char *, const unsigned char *, int); extern void char_decode_unicode(unsigned char *, const unsigned char *, int); const unsigned char *cin = "Äã12ºÃ15"; /* feff 4f60 0031 0032 597d 0031 0035 000a * unicode of it */ const int clen = 12; /* copy from address@hidden@myGnokii */ void dump_string(const char *message, int messagesize) { int i; char buf[17]; buf[16] = 0; for (i = 0; i < messagesize; i++) { if (i % 16 == 0) { if (i != 0) printf(" %s", buf); printf("\n"); memset(buf, ' ', 16); } else { printf("|"); } printf("%02x", message[i] & 0xff); if (isprint(message[i]) && message[i]!=0x09) { if ((i+1) % 16 != 0) printf("%c", message[i]); buf[i % 16] = message[i]; } else { if ((i+1) % 16 != 0) printf(" "); buf[i % 16] = '.'; } } if (i % 16 == 0) { printf(" %s", buf); } else { printf("%*s %s", 4 * (16 - i % 16) - 1, "", buf); } printf("\n"); } void do_test() { unsigned char u_dest[128]; unsigned char m_dest[128]; /* dump the old string */ dump_string(cin, clen); /* convert it to unicode */ char_encode_unicode(u_dest, cin, clen); dump_string(u_dest, clen * 2); /* conver the unicode to old*/ char_decode_unicode(m_dest, u_dest, clen * 2); dump_string(m_dest, clen); } int main() { if (setlocale(LC_ALL, "zh_CN")) do_test(); }