为编程爱好者分享易语言教程源码的资源网

网站首页 > 易语言相关 > 易语言例程 正文

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

三叶资源网 2019-07-29 07:57:17 易语言例程 4786 ℃ 6 评论
.版本 2
.支持库 shell
.支持库 spec

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕
.局部变量 临时字节集, 字节集

临时字节集 = 读入文件 (取特定目录 (3) + “1.txt”)
' 调试输出 (IsTextUTF8 (临时字节集, 取字节集长度 (临时字节集)))

.子程序 IsTextUTF8, 逻辑型, 公开, 判断字符是不是UTF-8类型
.参数 str, 字节集
.参数 length, 整数型
.局部变量 i
.局部变量 nBytes
.局部变量 chr
.局部变量 bAllAscii, 逻辑型

' 原文地址:http://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
    返回 (假)
.如果真结束
返回 (真)

@Onsxsen

文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有6位网友发表了看法:

  • 易语言

    易语言  评论于 [2020-04-14 12:09:55]  回复

    E语言判断编码

  • fiddler

    fiddler  评论于 [2022-03-02 19:21:56]  回复

    e4a+字节到文本编码类型

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
虎牙登录鱼刺类web面试题上传视频PHPQQ空间协议XML解析器易语言5.8淘宝登录熊猫tv弹幕软件QQ取本机cookie填表源码telegram模拟器群控类源码线程安全腾讯url.cn短网址高级表格Quoted游戏辅助外挂获取MD5源码数据结构
最新评论