.版本 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
返回 (假)
.如果真结束
返回 (真)
网页访问自动判断编码 易语言
易语言+中文字符+编码
E语言判断编码
易语言怎样判断字符串编码格式
易语言判断UTF8
e4a+字节到文本编码类型