QString 增加 DecodeText 函数并修改了 TQPtr 的实现,共享同一事件响应变量

【更新说明】

* 修改 TQPtr 的实现,将匿名释放事件和普通的事件使用同一个变量,这样减少不必要的开销
+ 增加 DecodeText 函数从内存中直接检测编码并返回Unicode编码的字符串,下面是其检测的原则:

  1. 如果字符串以 BOM 编码开头,则根据 BOM 确定字符串的编码;
  2. 如果字符串没有以 BOM 开头,则根据下述规则来判定其编码:
    • 如果字符串中出现 Utf-8 序列,则显示编码是 UTF-8;
    • 如果字符中出现英文字符,则字符的前一个位置为0,则编码为Unicode 16 BE;反过来,如果字符的下一个位置是0,则编码为 Unicode 16 LE;
    • 排除上面两种情况,则字符串的编码规则为 ANSI 编码,也就是 GBK/GB2302 编码

大家可以看到,在没有 BOM 的情况,判断规则并不能涵盖所有的内容,所以如果您能明确知道字符的编码集时,最好人为传递编码,以保证测试结果的正确。

【更新级别】

可选

分享到: