为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

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

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

三叶资源网 2019-07-29 07:57:17 易语言例程 4492 ℃ 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
多功能管理器CreateMutexAsocks5代理服务器源码B站分组框美化模块1.2加密与解密第四版登录易语言寻路鱼刺线程池百度POST登录协议标签浏览器聚享游文件内容穿透搜索替换工具窗口特效鱼刺HTTP多线程操作例子虎牙登录源码网页分析工具变量数据交换
最新评论