文件操作篇:5、实操内容-带中文字符文件读写-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

福牛迎春,属我最牛~
查看: 216|回复: 1

文件操作篇:5、实操内容-带中文字符文件读写

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2021-1-27 16:46:31 | 显示全部楼层 |阅读模式
    实操内容:5、带中文字符文件读写1、常见字符编码ASCIIASCII:American Standard Code for InformationInterchange,美国信息互换标准代码。
    ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。
    标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,
    数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。
    150921mr4065j5kdtf6trs.png

    英文表示基础字符有限,256位足够且有冗余,
    世界上的国家和文字、符号太多,对于一些语言,
    即使256位,也是不够用的,比如中文语言,
    于是就开始扩展,出现了Unicode字符集。
    UniCodeUnicode:统一码、万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
    Unicode是为了解决传统的字符编码方案的局限而产生的,
    它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
    以满足跨语言、跨平台进行文本转换、处理的要求
    151413qjf4fjefjuggwjew.png

    UTF-8、UTF-16UTF-8:8-bit Unicode Transformation Format,是一种针对Unicode的可变长度字符编码,内容一般有1-6个字节。UTF-16:把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递,缺点是无法与ASCII兼容,且字符内容有限。
    UTF-8编码示例:
    152510a4tb8ht440hun5u4.png

    1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。
    因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
    2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,
    后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
    2、一般编码关系
    现在计算机系统通用的字符编码工作方式:
    1、在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
    2、用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,
    编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
    153522td0zaq8sekr80ali.png

    3、Txt中编码类型说明
    153633ywmwwjnweknvukmj.png

    1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对 Windows 简体中文版,如果是繁体中文版会采用 Big5 码)。2)Unicode编码,即直接用两个字节存入字符的 Unicode 码,UniCode,这个选项用的 little endian 格式。     little endian  和 big endian是编码方式的区别3)汇川中型PLC编码施行标准为GB13000-2010,中文字符以双字节存储。
    154056j01e5o6b5zeoffxe.png

    4、PLC中UTF-16与UTF-8的转换
    带中文字符读写时,最标准和稳妥的方法可以直接使用转换函数,写入
    时将PLC的字符串编码变为标准的UTF-8格式,。
    如图:
    在库管理器中添加StringUtils工具库,我们使用其中的
    ConvertUTF16toUTF8 和 ConvertUTF8toUTF16函数。
    155103lo4c42gc9d3icis4.png

    函数使用如下:
    161212opoguqbg17qqcom7.png

    5、PLC中带中文字符读写方法
    只推荐两种,提前修改文件格式的这种方法不推荐,使用太麻烦。
    1、UTF-16转换成UTF-8
    这个方法上文已经介绍,一般这种方式TXT文件直接写入,直接打开不会造成乱码。
    但是在写CSV格式时仍会有乱码现象,原因后面再介绍。
    如图,CSV打开文件内中文字符是乱码。
    135127coz6duue0zbeb5kr.png

    打开方式选使用记事本
    135239oaxxjq88xhx4b4lb.png
    可以看到内容是没有乱码的
    135310xauwcawlhnrxgwrw.png
    这时我们将文件另存为,编码方式选择UTF-8。
    135439bv27ww2sqsu302mz.png
    再打开CSV发现乱码现象已经消失。
    135544lb7tngqtqihooqxn.png
    同样的,使用功能更为强大的NotePAD++也可以
    135659s8mpz3p99t6p86mr.png

    选择UTF-8编码。
    135727defxkgkfof5yoejg.png

    保存。
    135812intkxnl1mwyi1v96.png

    2、优化UTF-16转UTF-8
    除了编码方式导致的乱码外,在Windows环境下,
    对于 CSV 文件等,Excel 需要它有一个元信息来说明它的编码,
    微软自定义了一个格式叫  BOM 头,
    这个 BOM 头在被其他的表格展示器(比如 Numbers 或者 Libre Office)打开的时候会被忽略,
    但对 Excel 就很关键。
    所以可以在所有写操作前,我们先将BOM的信息内容写入TXT文件或CSV文件,这样就可以省去修改文件格式等操作。
    表头在网上可以查找到相关信息,我们直接说结论。
    先将表头信息在写正式内容前写入文档中。
    这两种是BOM头中UTF-8的表现形式STRING类型:$ef$bb$bfWSTRING类型:$FEFF表头信息只要在文档正式内容写入前,写入一次即可,不需要每次重复写。
    STRING:
    141258o5injl6mkn6ckkro.png

    WSTRING:
    141714gubp1k4ckk8sys1z.png
    这里都是随内容一起写入了,也可以分开写。
    直接打开文档,可以看到,这种情况下CSV将不会再发生乱码现象。
    141942qt7p3a3hv3dtpdax.png

    6、视频课程讲解&实操
    晚点补上视频链接和示例程序讲解

    附件内容:
    压缩文件包内是综合的示例程序
    7-综合练习-带中文字符文件读写.pptx (4.11 MB, 下载次数: 3)
    打赏鼓励一下!
    +10
    回复

    使用道具 举报

    该用户从未签到

    发表于 2021-2-8 15:46:23 | 显示全部楼层
    ????请教一下, CODESYS 里可以建立中文符号, 但是生成代码的时候,  XML里只有英文符号, 没有中文符号, 你知道怎么解决吗?
    打赏鼓励一下!
    +10
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2021-3-5 22:14 , Processed in 0.193352 second(s), 67 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表