ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

判断是否为繁体字

2021-07-10 17:53:06  阅读:367  来源: 互联网

标签:判断 繁体字 str int 是否 liT && 統計 161


///
//      判断是否为繁体
///
BOOL IsBig5(char *str)
{
 int lnBIG5 = 0;//用於統計可能是繁體字的漢字個數
 int lnGB = 0;//用於統計可能是簡體字的漢字個數
 int liTranLen = strlen(str);

 for(int liT = 0; liT<liTranLen; liT++)
 {
  //尾字節40-7E是BGI5碼特有的,如果掃描到這種編碼說明此字元串是繁體(經測試:有例外,可能是漢字的最後一個編碼與英文編碼組合而成的)
  if(str[liT]>=161 && str[liT]<=254 && str[liT+1]>=64 && str[liT+1]<=126)
   lnBIG5 ++;

  //首字節A4-A9在GB中為日文假名,希臘字母,俄文字母和制表符,正常文本中很少出現,而這個範圍是BIG5的常用漢字,所以認為這是BIG5碼
  if(str[liT]>=164 && str[liT]<=169 && str[liT+1]>=161 && str[liT+1]<=254)
   lnBIG5 ++;
  
  //GB中首字節AA-AF沒有定義,所以首字節位於AA-AF之間,尾字節位於A1-FE的編碼幾乎100%是BIG5(經測試:沒有100%),認為是BIG5碼
  if(str[liT]>=170 && str[liT]<=175 && str[liT+1]>=161 && str[liT+1]<=254)
   lnBIG5 ++;
  
  //首字節C6-D7,尾字節A1-FE在GB中屬於一級字庫,是常用漢字,而在BIG5中,C6-C7沒有明確定義,但通常用來放日文假名和序號,C8-D7屬於罕用漢字區,所以可認為是GB碼
  if(str[liT]>=196 && str[liT]<=215 && str[liT+1]>=161 && str[liT+1]<=254)
   lnGB ++;
 }

 //如果掃描完整個字元串,可能是簡體字的數目比可能是繁體字的數目多就認為是簡體字不轉簡(不一定准确)
 if(lnGB > lnBIG5)
  return FALSE;
 else
  return TRUE;
}

 

标签:判断,繁体字,str,int,是否,liT,&&,統計,161
来源: https://blog.51cto.com/u_15298588/3034546

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有