예제 #1
0
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;
}