判断文本编码是否为UTF-8格式

.版本 2 .支持库 shell .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 临时字节集, 字节集 临时字节集 = 读入文件 (取特定目录 (3) + “1.txt”) ' 调试输出 (IsTextUTF8 (临时字节集, 取字节集长度 (临时字节集))) .子程序 IsTextUTF8, 逻辑型, 公开, 判断字符是不是UTF-8类型 .参数 str, 字节集 .参数 length, 整数型 .局部变量 i .局部变量 nBytes .局部变量 chr .局部变量 bAllAscii, 逻辑型 ' 原文地址://bbs.chinaunix.net/thread-1824142-1-1.html ' 翻译:尘翎 ' 修正:骚年— —向前看! ' Ps:原文里的代码有点小问题,当中文字符里有数字或者字母,会认为就是Ascii编码 ' PPS:经测试发现空格也会出问题 .判断循环首 (i < length) i = i + 1 chr = str [i] .如果真 (chr = 32) ' 空格 UTF-8 和ANSI都是32 到循环尾 () .如果真结束 .如果真 (chr ≤ 57 且 chr ≥ 48) ' 0-9 到循环尾 () .如果真结束 .如果真 (chr ≤ 122 且 chr ≥ 97) ' a-z 到循环尾 () .如果真结束 .如果真 (chr ≤ 90 且 chr ≥ 65) ' A-Z 到循环尾 () .如果真结束 .如果真 (位与 (chr, 128) ≠ 0) ' // 判断是否ASCII编码,如果不是,说明有可能是UTF-8,ASCII用7位编码,但用一个字节存,最高位标记为0,o0xxxxxxx bAllAscii = 假 .如果真结束 .如果 (nBytes = 0) ' //如果不是ASCII码,应该是多字节符,计算字节数 .如果 (chr ≥ 128) .判断开始 (chr ≥ 252 且 chr ≤ 253) nBytes = 6 .判断 (chr ≥ 248) nBytes = 5 .判断 (chr ≥ 240) nBytes = 4 .判断 (chr ≥ 224) nBytes = 3 .判断 (chr ≥ 192) nBytes = 2 .默认 返回 (假) .判断结束 nBytes = nBytes - 1 .否则 .如果真 (位与 (chr, 192) ≠ 128) 返回 (假) .如果真结束 nBytes = nBytes - 1 .如果结束 .否则 ' //多字节符的非首字节,应为 10xxxxxx .如果真 (位与 (chr, 192) ≠ 128) 返回 (假) .如果真结束 nBytes = nBytes - 1 .如果结束 .判断循环尾 () .如果真 (nBytes > 0) ' //违返规则 调试输出 (1) 返回 (假) .如果真结束 .如果真 (bAllAscii) ' //如果全部都是ASCII, 说明不是UTF-8 返回 (假) .如果真结束 返回 (真)
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

判断文本编码是否为UTF-8格式》有0个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注