⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nls.cpp

📁 This software performs code conversion of Chinese characters, including GB2312/GBK and BIG5. It a
💻 CPP
📖 第 1 页 / 共 2 页
字号:
   int nResult ;

   switch ( nCodePage ) {
      case CP_MAC_EUROPEAN :
      case CP_MAC_JAPANESE :
      case CP_MAC_CHINESE_TRADITIONAL :
      case CP_MAC_KOREAN :
      case CP_MAC_ARABIC :
      case CP_MAC_HEBREW :
      case CP_MAC_GREEK :
      case CP_MAC_CYRILLIC :
      case CP_MAC_CHINESE_SIMPLIFIED :
      case CP_MAC_ROMANIAN :
      case CP_MAC_UKRAINIAN :
      case CP_MAC_THAI :
      case CP_MAC_CENTRAL_EUROPEAN :
      case CP_MAC_ICELANDIC :
      case CP_MAC_TURKISH :
      case CP_MAC_CROATIAN :
         nResult = 1 ; break ;
      default :
         nResult = 0 ; break ;
   }

   return nResult ;
}



// 戜榩偺屆偄僐乕僪儁乕僕偐偳偆偐
int IsTaiwanLegacyCodePage ( int nCodePage ) {

   int nResult ;

   switch ( nCodePage ) {
      case CP_CHINESE_TRADITIONAL_CNS :
      case CP_CHINESE_TRADITIONAL_TCA :
      case CP_CHINESE_TRADITIONAL_ETEN :
      case CP_CHINESE_TRADITIONAL_IBM5550 :
      case CP_CHINESE_TRADITIONAL_TELETEXT :
      case CP_CHINESE_TRADITIONAL_WANG :
         nResult = 1 ; break ;
      default :
         nResult = 0 ; break ;
   }

   return nResult ;
}



// ISCII 僐乕僪儁乕僕偐偳偆偐
int IsCodePageIscii ( int nCodePage ) {

   int nResult ;

   switch ( nCodePage ) {
      case CP_ISCII_DEVANAGARI :
      case CP_ISCII_BENGALI :
      case CP_ISCII_TAMIL :
      case CP_ISCII_TELUGU :
      case CP_ISCII_ASSAMESE :
      case CP_ISCII_ORIYA :
      case CP_ISCII_KANNADA :
      case CP_ISCII_MALAYALAM :
      case CP_ISCII_GUJARATHI :
      case CP_ISCII_PANJABI :
         nResult = 1 ; break ;
      default :
         nResult = 0 ; break ;
   }

   return nResult ;
}



// 僞儈儖岅梡 僐乕僪儁乕僕偐偳偆偐
int IsCodePageTamil ( int nCodePage ) {

   int nResult ;

   switch ( nCodePage ) {
      case CP_TAMIL_TSCII :
      case CP_TAMIL_TAM :
      case CP_TAMIL_TAB :
         nResult = 1 ; break ;
      default :
         nResult = 0 ; break ;
   }

   return nResult ;
}



// 僀儞僪彅尵岅偺僐乕僪儁乕僕偐偳偆偐
int IsCodePageIndic ( int nCodePage ) {
   return IsCodePageIscii ( nCodePage ) || IsCodePageTamil ( nCodePage ) ;
}



// EBCDIC 偺僐乕僪儁乕僕偐偳偆偐
int IsCodePageEbcdic ( int nCodePage ) {

   int nResult ;

   switch ( nCodePage ) {
      case CP_EBCDIC_US_CANADA :
      case CP_EBCDIC_INTERNATIONAL :
      case CP_EBCDIC_MULTILINGUAL :
      case CP_EBCDIC_GREEK_MODERN :
      case CP_EBCDIC_AIX_PAKISTAN :
      case CP_EBCDIC_CYRILLIC :
      case CP_EBCDIC_TURKISH :
      case CP_EBCDIC_OPEN_EDITION_US :
      case CP_EBCDIC_SYSTEM_390 :
      case CP_EBCDIC_PERSIAN :
      case CP_EBCDIC_PERSIAN_PC :
      case CP_EBCDIC_LATVIA_LITHUANIA :
      case CP_EBCDIC_ESTONIA :
      case CP_EBCDIC_UKRAINE :
      case CP_EBCDIC_AIX_UKRAINE :
      case CP_EBCDIC_VIETNAMESE :
      case CP_EBCDIC_LAO :
      case CP_EBCDIC_DEVANAGARI :
      case CP_EBCDIC_US_CANADA_EURO :
      case CP_EBCDIC_GERMANY_EURO :
      case CP_EBCDIC_DENMARK_NORWAY_EURO :
      case CP_EBCDIC_FINLAND_SWEDEN_EURO :
      case CP_EBCDIC_ITALY_EURO :
      case CP_EBCDIC_SPAIN_EURO :
      case CP_EBCDIC_UK_EURO :
      case CP_EBCDIC_FRANCE_EURO :
      case CP_EBCDIC_INTERNATIONAL_EURO :
      case CP_EBCDIC_ICELANDIC_EURO :
      case CP_EBCDIC_MULTILINGUAL_EUR :
      case CP_EBCDIC_CYRILLIC_EURO :
      case CP_EBCDIC_TURKEY_EURO :
      case CP_EBCDIC_BALTIC_EURO :
      case CP_EBCDIC_ESTONIA_EURO :
      case CP_EBCDIC_UKRAINE_EURO :
      case CP_EBCDIC_VIETNAMESE_EURO :

      case CP_EBCDIC_GERMANY :
      case CP_EBCDIC_DENMARK_NORWAY :
      case CP_EBCDIC_FINLAND_SWEDEN :
      case CP_EBCDIC_ITALY :
      case CP_EBCDIC_SPAIN :
      case CP_EBCDIC_UK :
      case CP_EBCDIC_JAPANESE_KATAKANA :
      case CP_EBCDIC_FRANCE :
      case CP_EBCDIC_ARABIC :
      case CP_EBCDIC_GREEK :
      case CP_EBCDIC_HEBREW :
      case CP_EBCDIC_KOREAN_EXTENDED :
      case CP_EBCDIC_THAI :
      case CP_EBCDIC_ICELANDIC :
      case CP_EBCDIC_RUSSIAN :
      case CP_EBCDIC_TURKISH2 :
      case CP_EBCDIC_LATIN1_OPEN_SYSTEM :
      case CP_EBCDIC_SERBIAN_BULGARIAN :

      case CP_EBCDIC_JAPANESE_AND_KATAKANA :
      case CP_EBCDIC_JAPANESE_AND_LATIN :
      case CP_EBCDIC_JAPANESE_AND_US_CANADA :
      case CP_EBCDIC_KOREAN_AND_KOREAN_EX :
      case CP_EBCDIC_SIMPLIFIED_CHINESE :
      case CP_EBCDIC_TRADITIONAL_CHINESE :
         nResult = 1 ; break ;
      default :
         nResult = 0 ; break ;
   }

   return nResult ;
}



// 僔僗僥儉偺僐乕僪儁乕僕偑 HKSCS 偐偳偆偐
int IsOsCodePageHkscs ( void ) {

   if ( GetACP () != CP_CHINESE_TRADITIONAL ) return 0 ;

   return IsValidCodePageHkscs () ;
}



// HKSCS 偑桳岠側僐乕僪儁乕僕偐偳偆偐
int IsValidCodePageHkscs ( void ) {

   if ( ! IsValidCodePage ( CP_CHINESE_TRADITIONAL ) ) return 0 ;

   wchar_t szBuffer [ 2 ] ;

   int nLen = MultiByteToWideChar ( CP_CHINESE_TRADITIONAL, 0, "\x9D\xF1", 2, szBuffer, 2 ) ;
   if ( nLen == 1 && *szBuffer == 0x66F1 ) return 1 ;

   return 0 ;
}



// CP_THREAD_ACP 偵懳墳偡傞僐乕僪儁乕僕傪曉偡
// 僄儔乕側傜 0 傪曉偡
int GetThreadACP ( void ) {

   char szResult [ 0x10 ] ;

   if ( GetLocaleInfo ( GetThreadLocale (), LOCALE_IDEFAULTANSICODEPAGE, szResult, 0x10 ) ) {
      errno = 0 ;
      int nResult = strtoul ( szResult, NULL, 10 ) ;
      if ( ! errno && nResult >= 0x10 ) return nResult ;
   }

   return 0 ;
}



// Some compilers do not support
#ifndef LOCALE_IDEFAULTMACCODEPAGE
#define LOCALE_IDEFAULTMACCODEPAGE  0x00001011   /* default mac code page */
#endif



// CP_MACCP 偵懳墳偡傞僐乕僪儁乕僕傪曉偡
// 僄儔乕側傜 0 傪曉偡
int GetMacCP ( void ) {

   char szResult [ 0x10 ] ;

   if ( GetLocaleInfo ( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTMACCODEPAGE, szResult, 0x10 ) ) {
      errno = 0 ;
      int nResult = strtoul ( szResult, NULL, 10 ) ;
      if ( ! errno && nResult >= 0x10 ) return nResult ;
   }

   return 0 ;
}



//////////////////////////////
//        尵岅幆暿巕        //
//////////////////////////////



// 暥帤僙僢僩偐傜揔愗側尵岅幆暿巕傪曉偡
// 奩摉偡傞傕偺偑側偗傟偽 0 傪曉偡
int CharsetToLangId ( int nCharset ) {

   int nLang ;

   switch ( nCharset ) {
      case ANSI_CHARSET :        nLang = MAKELANGID ( LANG_ENGLISH, SUBLANG_ENGLISH_US ) ; break ;
      case GREEK_CHARSET :       nLang = MAKELANGID ( LANG_GREEK, SUBLANG_DEFAULT ) ; break ;
      case RUSSIAN_CHARSET :     nLang = MAKELANGID ( LANG_RUSSIAN, SUBLANG_DEFAULT ) ; break ;
      case BALTIC_CHARSET :      nLang = MAKELANGID ( LANG_ENGLISH, SUBLANG_ENGLISH_US ) ; break ;
      case EASTEUROPE_CHARSET :  nLang = MAKELANGID ( LANG_ENGLISH, SUBLANG_ENGLISH_US ) ; break ;
      case TURKISH_CHARSET :     nLang = MAKELANGID ( LANG_ENGLISH, SUBLANG_ENGLISH_US ) ; break ;
      case SHIFTJIS_CHARSET :    nLang = MAKELANGID ( LANG_JAPANESE, SUBLANG_DEFAULT ) ; break ;
      case HANGUL_CHARSET :      nLang = MAKELANGID ( LANG_KOREAN, SUBLANG_DEFAULT ) ; break ;
      case GB2312_CHARSET :      nLang = MAKELANGID ( LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED ) ; break ;
      case CHINESEBIG5_CHARSET : nLang = MAKELANGID ( LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL ) ; break ;
      case THAI_CHARSET :        nLang = MAKELANGID ( LANG_THAI, SUBLANG_DEFAULT ) ; break ;
      case VIETNAMESE_CHARSET :  nLang = MAKELANGID ( LANG_VIETNAMESE, SUBLANG_DEFAULT ) ; break ;
      case HEBREW_CHARSET :      nLang = MAKELANGID ( LANG_HEBREW, SUBLANG_DEFAULT ) ; break ;
      case ARABIC_CHARSET :      nLang = MAKELANGID ( LANG_ARABIC, SUBLANG_DEFAULT ) ; break ;
      default :                  nLang = 0 ; break ;
   }

   return nLang ;
}



// 巜掕偺尵岅幆暿巕偑 CJK 偐偳偆偐
int IsLangIdCjk ( int nLangId ) {

   nLangId = PRIMARYLANGID ( nLangId ) ;

   int nResult ;

   switch ( nLangId ) {
      case LANG_JAPANESE :
      case LANG_KOREAN :
      case LANG_CHINESE :
         nResult = 1 ; break ;
      default :
         nResult = 0 ; break ;
   }

   return nResult ;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -