#include #include #include "stringutils.h" // g++ -D_GCC tststr.cpp ../common/stringutils.cpp -I ../common -I ../include/win32/ -liconv WCHAR utf16[][8]= { { 0xdbff, 0xdffd, 0}, // f4 8f bf bd { 1, 0 }, // 01 { 0x7f, 0 }, // 7f { 0x80, 0 }, // c2 80 { 0x100, 0 }, // c4 80 { 0x7ff, 0 }, // df bf { 0x800, 0 }, // e0 a0 80 { 0x7fff, 0 }, // e7 bf bf { 0x8000, 0 }, // e8 80 80 { 0xd7ff, 0 }, // ed 9f bf { 0xd800, 0 }, // ed a0 80 { 0xdbff, 0 }, // ed af bf { 0xdc00, 0 }, // ed b0 80 { 0xdfff, 0 }, // ed bf bf { 0xe000, 0 }, // ee 80 80 { 0xfffd, 0 }, // ef bf bd { 0xfffe, 0 }, // ef bf be { 0xffff, 0 }, // ef bf bf { 0xdbff, 0xdfff, 0 }, // f4 8f bf bf }; #define NUTF16 (sizeof(utf16)/sizeof(*utf16)) char utf8[][8]= { { 0x01, 0 }, // 0001 { 0x7f, 0 }, // 007f { 0xc0, 0x80, 0 }, // invalid { 0xc2, 0x80, 0 }, // 0080 { 0xdf, 0xbf, 0 }, // 07ff { 0xe0, 0x80, 0x80, 0 }, // invalid { 0xe0, 0xa0, 0x80, 0 }, // 0800 { 0xed, 0xa7, 0xbf, 0 }, // d9ff { 0xed, 0xa8, 0x80, 0 }, // da00 { 0xed, 0xb7, 0xbf, 0 }, // ddff { 0xed, 0xb8, 0x80, 0 }, // de00 { 0xed, 0xbf, 0xbf, 0 }, // dfff { 0xef, 0xbf, 0xbf, 0 }, // ffff { 0xf0, 0x80, 0x80, 0x80, 0 }, // invalid { 0xf0, 0x90, 0x80, 0x80, 0 }, // d800 dc00 { 0xf0, 0x90, 0x87, 0xbf, 0 }, // d800 ddff { 0xf0, 0x90, 0x8f, 0xbf, 0 }, // d800 dfff { 0xf2, 0x8f, 0xb0, 0x80, 0 }, // d9ff dc00 { 0xf2, 0x8f, 0xb7, 0xbf, 0 }, // d9ff ddff { 0xf2, 0x8f, 0xb8, 0x80, 0 }, // d9ff de00 { 0xf2, 0x8f, 0xbf, 0xbf, 0 }, // d9ff dfff { 0xf2, 0x90, 0x80, 0x80, 0 }, // da00 dc00 { 0xf2, 0x90, 0x87, 0xbf, 0 }, // da00 ddff { 0xf2, 0x90, 0x88, 0x80, 0 }, // da00 de00 { 0xf2, 0x90, 0x8f, 0xbf, 0 }, // da00 dfff { 0xf4, 0x8f, 0xb0, 0x80, 0 }, // dbff dc00 { 0xf4, 0x8f, 0xb7, 0xbf, 0 }, // dbff ddff { 0xf4, 0x8f, 0xb8, 0x80, 0 }, // dbff de00 { 0xf4, 0x8f, 0xbf, 0xbf, 0 }, // dbff dfff { 0xf7, 0xbf, 0xbf, 0xbf, 0 }, // invalid }; #define NUTF8 (sizeof(utf8)/sizeof(*utf8)) int main(int argc, char **argv) { printf("utf16 -> utf8 wc=%lu wstr=%lu\n", sizeof(WCHAR), sizeof(std::Wstring::value_type)); for (size_t i=0 ; i utf16\n"); for (size_t i=0 ; i