lua去掉字符串中的UTF-8的BOM三个字节

废话不多说,还是先说点吧,项目中lua读取的text文件如果有BOM,客户端解析就会报错,所以我看了看,任务编辑器swGameTaskEditor 在写入文件的时候,也不知道为什么有的文件就是UTF-8BOM格式;但一般都是 UTF-8 无BOM的。

还是从lua改起来吧。搜了一搜,没搜索到直接可以使用的代码。

本来想用 

    string.gsub(mainString,findString,replaceString,num)

来替换\xEFBBBF为空。不过 \xEFBBBF 这种表示方法,lua貌似不认,会报错,加上引号怎么就成了字符 EFBBBF了呢?

干脆找找 lua 是如何处理二进制文件的。

找了点资料,没用二进制,还是用string本身的功能来实现的:

-- 检测前三个字节是否是 EF BB BF 也就是BOM标记;如果是就去掉,只保留后面的字节。
function
TryRemoveUtf8BOM(ret)if string.byte(ret,1)==239 and string.byte(ret,2)==187 and string.byte(ret,3)==191ret=string.char( string.byte(ret,4,string.len(ret)) )endreturn ret; end

 

 这样就好了。随时都可以调用了。。。可以加上 print("ret="..ret);打印出来,并用 vim - 通过管道来读取stdout,vim会显示 

<feff>

可以使用下面语句测试:

lua -e "print('aaaa'..string.char(239,187,191)..'with utf-8 BOM bytes in content')"

 

转载于:https://www.cnblogs.com/ayanmw/p/6700842.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JQuery对象与DOM对象的区别与转换

1.jQuery对象和DOM对象的区别 DOM对象&#xff0c;即是我们用传统的方法(javascript)获得的对象&#xff0c;jQuery对象即是用jQuery类库的选择器获得的对象; eg: var domObj document.getElementById("id"); //DOM对象var $obj $("#id"); //jQuery对象;…

halcon append_ocr_trainf 将字符添加到训练文件中

目录append_ocr_trainf&#xff08;算子&#xff09;描述参数append_ocr_trainf&#xff08;算子&#xff09; append_ocr_trainf - 将字符添加到训练文件中。 append_ocr_trainf&#xff08;Character&#xff0c;Image :: Class&#xff0c;TrainingFile ? 描述 运算符a…

CCD 尺寸

CCD&#xff08;包括CMOS感光元件&#xff09;的面积是按其矩形对角线英寸长度为指标的。这和定义电视屏幕尺寸类似。一英寸是25.4毫米。1/2.0英寸、1/1.8都是指CCD 对角线有多少分之一英寸长&#xff0c;分母小的其分数值就大&#xff0c;相应感光元件面积也大。 1/2.…

Quagga的安装碰到的问题

1.如果出现以下错误&#xff1a; vtysh: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: UP 解决方法如下: 1.rootlocalhost:~ # cd /usr/local/lib 2.rootlocalhost:/usr/local/lib# ls -la libreadline* 3.rootlocalhost:/usr/local/lib# mkd…

X264电影压缩率画质

X264电影压缩率画质全对比&#xff1a; http://www.mov8.com/dvd/freetalk_show.asp?id29778

halcon read_ocr_trainf 从文件中读取训练字符并转换为图像

目录read_ocr_trainf&#xff08;算子&#xff09;描述参数read_ocr_trainf&#xff08;算子&#xff09; read_ocr_trainf - 从文件中读取训练字符并转换为图像。 read_ocr_trainf&#xff08;&#xff1a;Characters&#xff1a;TrainingFile&#xff1a;CharacterNames&am…

(十二)洞悉linux下的Netfilteramp;iptables:iptables命令行工具源码解析【下】

iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了&#xff0c;因此它在实现上也需要同时兼容这两个版本。iptables-1.4.0在这方面做了很好的设计&#xff0c;主要是由libiptc库来实现。libiptc是iptables control library的简称&#xff0c;是Netfi…

Linux 下实现普通用户只能写入某个目录

今天老婆问了我一个问题&#xff1a;如何在linux 下实现某个目录普通用户能够写入文件&#xff0c;但是不能删除或修改&#xff08;只能由root 删除或修改&#xff09;。开始的两分钟里&#xff0c;我初步判断这是做不到的&#xff0c;因为linux 下能 写入&#xff08;w&#x…

CCD和CMOS摄像头成像原理以及其他区别

&#xfeff;&#xfeff;CCD的第二层是分色滤色片&#xff0c;目前有两种分色方式&#xff0c;一是RGB原色分色法&#xff0c;另一个则是CMYG补色分色法&#xff0c;这两种方法各有利弊。不过以产量来看&#xff0c;原色和补色CCD的比例大约在2&#xff1a;1左右。原色CCD的优…

FFMPEG分析比较细的文章

http://blog.csdn.net/ym012/article/details/6538301

恢复Ext3下被删除的文件(转)

前言 下面是这个教程将教你如何在Ext3的文件系统中恢复被rm掉的文件。 删除文件 假设我们有一个文件名叫 ‘test.txt’ $ls -il test.txt15 -rw-rw-r– 2 root root 20 Apr 17 12:08 test.txt 注意&#xff1a;: “-il” 选项表示显示文件的i-node号&#xff08;15&#xff09;…

halcon trainf_ocr_class_svm 训练OCR分类器

目录trainf_ocr_class_svm&#xff08;算子&#xff09;描述参数trainf_ocr_class_svm&#xff08;算子&#xff09; trainf_ocr_class_svm - 训练OCR分类器。 trainf_ocr_class_svm&#xff08;:: OCRHandle&#xff0c;TrainingFile&#xff0c;Epsilon&#xff0c;TrainMo…

Javascript之全局变量和局部变量部分讲解

以此文作为自己学习的一个总结。 关于全局变量和局部变量的一句简单的定义&#xff1a;在函数外声明的变量都为全局变量&#xff0c;在函数内声明的为局部变量。 一、局部变量和全局变量重名会覆盖全局变量 1 var a 1; 2 function test1() { 3 var a 2; 4 ale…

XML-RPC使用手册

内容列表 Preface: About This Manual Introduction to XML-RPC for C/C What is XML-RPC? How Does XML-RPC For C/C Help? More Information On XML-RPC For C/CThe Xmlrpc-c Function Libraries C Libraries C LibrariesUtility Programs xmlrpc xmlrpc_dumpserverAlterna…

利用ffmpeg来进行视频解码的完整示例代码(H.264)

Decode() { FILE * inpf; int nWrite; int i,p; int nalLen; unsigned char* Buf; int got_picture, consumed_bytes; unsigned char *DisplayBuf; DisplayBuf(unsigned char *)malloc(60000); char outfile[] "test.pgm"; //1.打开输入文件 inpf fopen("test…

如何成为非标行业的大拿

&#xfeff;&#xfeff;1&#xff0c;选一个好的舞台&#xff08;工作环境&#xff09;&#xff0c;有个广告词叫&#xff1a;‘心有多大&#xff0c;舞台就有多大’&#xff0c;我想变个说法叫‘舞台越大&#xff0c;心就越大’。决定你表演效果的舞台&#xff0c;你如果选择…

TCP UDP HTTP 的关系和区别

TCP UDP HTTP 三者的关系: TCP/IP是个协议组&#xff0c;可分为四个层次&#xff1a;网络接口层、网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有HTTP、FTP、TELNET、SMTP、DNS等协议。 TCP…

微信开放平台全网发布时,检测失败 —— C#

主要就是三个&#xff1a;返回API文本消息&#xff0c;返回普通文本消息&#xff0c;发送事件消息 --会出现失败的情况 &#xff08;后续补充说明&#xff1a;出现检测出错&#xff0c;不一定是代码出现了问题&#xff0c;也有可能是1.微信方面检测时出现服务器请求失败&…

halcon reduce_ocr_class_svm 缩减基于SVM的OCR分类器。

目录reduce_ocr_class_svm&#xff08;算子&#xff09;描述参数reduce_ocr_class_svm&#xff08;算子&#xff09; reduce_ocr_class_svm - 缩减基于SVM的OCR分类器。 reduce_ocr_class_svm&#xff08;:: OCRHandle&#xff0c;Method&#xff0c;MinRemainingSV&#xff…

Zabbix 钉钉报警

话不多说&#xff0c;咱们直接进入正题钉钉报警时基于zabbix&#xff0c;访问钉钉应用接口去推送的报警消息&#xff0c;所以我们需要一个在钉钉创建一个报警应用1、 我做的钉钉报警是基于钉钉自定义应用进行推送的所以需要登录钉钉管理后台进行创建&#xff08;zabbix自定义应…