中型PLC系列-文件操作篇
本课程分为基础内容和实操内容两部分,前者帮助大家了解文件操作基本内容,后者帮助大家快速上手应用。
基础内容:
1、文件操作的应用
2、文件操作函数库
3、文件操作函数 (附文件操作视频上篇)
实操内容:
4、TXT\CSV、U盘\SD卡文件读写&实操
5、带中文字符文件读写&实操(附文件操作视频下篇)
实操内容:5、带中文字符文件读写
1、常见字符编码
ASCII
ASCII:American Standard Code for InformationInterchange,美国信息互换标准代码。
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。
标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,
数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。
英文表示基础字符有限,256位足够且有冗余,
世界上的国家和文字、符号太多,对于一些语言,
即使256位,也是不够用的,比如中文语言,
于是就开始扩展,出现了Unicode字符集。
UniCode
Unicode:统一码、万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
Unicode是为了解决传统的字符编码方案的局限而产生的,
它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
以满足跨语言、跨平台进行文本转换、处理的要求
UTF-8、UTF-16
UTF-8:8-bit Unicode Transformation Format,是一种针对Unicode的可变长度字符编码,
内容一般有1-6个字节。
UTF-16:把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递,
缺点是无法与ASCII兼容,且字符内容有限。
UTF-8编码示例:
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保存到文件。
3、Txt中编码类型说明
1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对 Windows 简体中文版,如果是繁体中文版会采用 Big5 码)。
2)Unicode编码,即直接用两个字节存入字符的 Unicode 码,UniCode,这个选项用的 little endian 格式。
little endian 和 big endian是编码方式的区别
3)汇川中型PLC编码施行标准为GB13000-2010,中文字符以双字节存储。
4、PLC中UTF-16与UTF-8的转换
带中文字符读写时,最标准和稳妥的方法可以直接使用转换函数,写入
时将PLC的字符串编码变为标准的UTF-8格式,。
如图:
在库管理器中添加StringUtils工具库,我们使用其中的
ConvertUTF16toUTF8 和 ConvertUTF8toUTF16函数。
函数使用如下:
5、PLC中带中文字符读写方法
只推荐两种,提前修改文件格式的这种方法不推荐,使用太麻烦。
1、UTF-16转换成UTF-8
这个方法上文已经介绍,一般这种方式TXT文件直接写入,直接打开不会造成乱码。
但是在写CSV格式时仍会有乱码现象,原因后面再介绍。
如图,CSV打开文件内中文字符是乱码。
打开方式选使用记事本
可以看到内容是没有乱码的
这时我们将文件另存为,编码方式选择UTF-8。
再打开CSV发现乱码现象已经消失。
同样的,使用功能更为强大的NotePAD++也可以
选择UTF-8编码。
保存。
2、优化UTF-16转UTF-8
除了编码方式导致的乱码外,在Windows环境下,
对于 CSV 文件等,Excel 需要它有一个元信息来说明它的编码,
微软自定义了一个格式叫 BOM 头,
这个 BOM 头在被其他的表格展示器(比如 Numbers 或者 Libre Office)打开的时候会被忽略,
但对 Excel 就很关键。
所以可以在所有写操作前,我们先将BOM的信息内容写入TXT文件或CSV文件,这样就可以省去修改文件格式等操作。
表头在网上可以查找到相关信息,我们直接说结论。
先将表头信息在写正式内容前写入文档中。
这两种是BOM头中UTF-8的表现形式
STRING类型:$ef$bb$bf
WSTRING类型:$FEFF
表头信息只要在文档正式内容写入前,写入一次即可,不需要每次重复写。
STRING:
WSTRING:
这里都是随内容一起写入了,也可以分开写。
直接打开文档,可以看到,这种情况下CSV将不会再发生乱码现象。
6、视频课程讲解&实操
晚点补上视频链接和示例程序讲解
附件内容:
压缩文件包内是综合的示例程序
File Operation.7z
(74.82 KB, 下载次数: 247, 售价: 20 )