博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中文编码识别通用宏
阅读量:2494 次
发布时间:2019-05-11

本文共 2222 字,大约阅读时间需要 7 分钟。

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

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

 

#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

转载地址:http://mdmrb.baihongyu.com/

你可能感兴趣的文章
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day06
查看>>