Int32 main(Int32 argc, char** argv) { charBuf* latin1 = 0; NAWchar wbuf[1]; NAWcharBuf uni(wbuf, 1); for ( NAWchar i=0; i<0xff; i++ ) { wbuf[0] = i; latin1 = unicodeToISO88591(uni, 0, latin1); if ( latin1 && latin1->data()[0] != i ) { printf("u2l1 test failed\n"); return 1; } } unsigned char buf[1]; charBuf ascii(buf, 1); NAWcharBuf* unicode = 0; for ( unsigned char j=0; j<0xff; j++ ) { buf[0] = j; unicode = ISO88591ToUnicode(ascii, 0, unicode); if ( unicode && unicode->data()[0] != j ) { printf("l12u test failed\n"); return 1; } } wbuf[0] = 0xC0F3; // negative test latin1 = unicodeToISO88591(uni, 0, latin1); if ( latin1 ) printf("negative u2l1 test failed\n"); printf("test pass\n"); return 0; }
Lng32 UnicodeStringToLocale(Lng32 charset, const NAWchar* wstr, Lng32 wstrLen, char* buf, Lng32 bufLen, NABoolean addNullAtEnd, NABoolean allowInvalidCodePoint) { charBuf cbuf((unsigned char*)buf, bufLen); charBuf* cbufPtr = &cbuf; charBuf* res = 0; Int32 errorcode = 0; switch (charset) { #ifdef IS_MP /* :cnu -- As of 8/30/2011, not used in SQ SQL */ case CharInfo::KANJI_MP: res = unicodeToSjis( NAWcharBuf((NAWchar*)wstr, wstrLen), 0, cbufPtr, addNullAtEnd, allowInvalidCodePoint ); break; case CharInfo::KSC5601_MP: res = unicodeToKsc5601( NAWcharBuf((NAWchar*)wstr, wstrLen), 0, cbufPtr, addNullAtEnd, allowInvalidCodePoint ); break; #endif case CharInfo::ISO88591: res = unicodeToISO88591( NAWcharBuf((NAWchar*)wstr, wstrLen), 0, cbufPtr, addNullAtEnd, allowInvalidCodePoint ); break; // case CharInfo::ISO88591: case CharInfo::EUCJP: case CharInfo::GB18030: case CharInfo::GB2312: case CharInfo::GBK: case CharInfo::KSC5601: case CharInfo::BIG5: case CharInfo::UTF8: case CharInfo::SJIS: res = unicodeTocset( NAWcharBuf((NAWchar*)wstr, wstrLen), 0, cbufPtr, charset, errorcode, addNullAtEnd, allowInvalidCodePoint ); break; default: break; } return (res) ? res->getStrLen() : 0; }