博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua去掉字符串中的UTF-8的BOM三个字节
阅读量:7048 次
发布时间:2019-06-28

本文共 766 字,大约阅读时间需要 2 分钟。

废话不多说,还是先说点吧,项目中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)==191        ret=string.char( string.byte(ret,4,string.len(ret)) )    end    return 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')"

 

转载地址:http://vjdol.baihongyu.com/

你可能感兴趣的文章
用pushd、popd和cd - 快速定位目录
查看>>
Android安全防护之旅---带你把Apk混淆成中文语言代码
查看>>
mysql清空表的方法
查看>>
Http协议及apache配置笔记
查看>>
读书笔记-大颠狂(非同寻常的大众幻想与群众性癫狂)
查看>>
MySQL 多条数据的一个字段合并
查看>>
jquery AJAX清除IE缓存问题
查看>>
Percona XtraBackup (译一):首页
查看>>
一大早就解决了个服务器***问题
查看>>
配置 WebLogic Maven Plug-In 远程部署weblogic
查看>>
聊一聊Java中的系列化
查看>>
Objective-c 继承,多态,封装
查看>>
Red Hat Linux 6.0安装图解
查看>>
Python列表详解
查看>>
Fresco图片显示
查看>>
从无法开启 OCSP Stapling 说起,OCSP是什么
查看>>
我的友情链接
查看>>
项目中遇到的问题
查看>>
Linux下进程管理工具之(三):glances
查看>>
如何添加AdMob广告到现有的Unity3D ios游戏
查看>>