中文编码识别通用宏

之前的文章介绍了中文编码的复杂性,做网页分析或者搜索引擎的程序员们或多或少会用到,

这里贴几个我的中文编码识别的宏,与大家分享:

 

#define IS_GB(cst) ( IN_RANGE((cst)[0], SYM_HIMIN, SYM_HIMAX) && IN_RANGE((cst)[1], SYM_LOMIN, SYM_LOMAX) )

#define IS_GBK(cst)      ( IN_RANGE((cst)[0], GBK_HIMIN, GBK_HIMAX) && IN_RANGE((cst)[1], GBK_LOMIN, GBK_LOMAX) )

#define IS_GB_CODE(cst) ( IN_RANGE((cst)[0], CHAR_HIMIN, CHAR_HIMAX) && IN_RANGE((cst)[1], CHAR_LOMIN, CHAR_LOMAX) )

#define IS_GB_MARK(cst) ( IN_RANGE((cst)[0], MARK_HIMIN, MARK_HIMAX) && IN_RANGE((cst)[1], MARK_LOMIN, MARK_LOMAX) )

#define IS_GB_SMAEK(cst) ( IN_RANGE((cst)[0], SMARK_HIMIN, SMARK_HIMAX) && IN_RANGE((cst)[1], SMARK_LOMIN, SMARK_LOMAX) )

#define IS_GB_SPACE(cst) ( (((unsigned char)((cst)[0]))==SYM_HIMIN) && (((unsigned char)((cst)[1]))==SYM_LOMIN) )

 

#define SYM_HIMIN 0xA1 /* GB symbol : minmum value of first byte */
#define SYM_HIMAX 0xF7 /* GB symbol : maxmum value of first byte */
#define SYM_LOMIN 0xA1 /* GB symbol : minmum value of second byte */
#define SYM_LOMAX 0xFE /* GB symbol : maxmum value of second byte */

#define CHAR_HIMIN 0xB0 /* GB char   : min - 1st byte */
#define CHAR_HIMAX 0xF7 /* GB char   : max - 1st byte */
#define CHAR_LOMIN 0xA1 /* GB char   : min - 2nd byte */
#define CHAR_LOMAX 0xFE /* GB char   : max - 2nd byte */

#define CHAR_HINUM      0x48 /* (0xF7-0xB0+1) */
#define CHAR_LONUM      0x5E /* (0xFE-0xA1+1) */

#define MARK_HIMIN 0xA1 /* GB mark   : min - 1st byte */
#define MARK_HIMAX 0xAF /* GB mark   : max - 1st byte */
#define MARK_LOMIN 0xA1 /* GB mark   : min - 2nd byte */
#define MARK_LOMAX 0xFE /* GB mark   : max - 2nd byte */

#define SMARK_HIMIN      0xA3    /* simple GB mark   : min - 1st byte */
#define SMARK_HIMAX      0xA3    /* simple GB mark   : max - 1st byte */
#define SMARK_LOMIN      0xA1    /* simple GB mark   : min - 2nd byte */
#define SMARK_LOMAX      0xFE    /* simple GB mark   : max - 2nd byte */

#define DIGIT_HIMIN     0xa3    /* GB 0---9 */
#define DIGIT_HIMAX     0xa3
#define DIGIT_LOMIN     0xb0
#define DIGIT_LOMAX     0xb9
 
#define HI_HIMIN        0xa3    /* GB A---Z */  
#define HI_HIMAX        0xa3
#define HI_LOMIN        0xc1
#define HI_LOMAX        0xda
                       
#define LOW_HIMIN       0xa3    /* GB a---z */
#define LOW_HIMAX       0xa3
#define LOW_LOMIN       0xe1
#define LOW_LOMAX       0xfa

#define GBK_HIMIN       0x81
#define GBK_HIMAX       0xfe
#define GBK_LOMIN       0x40
#define GBK_LOMAX       0xfe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值