zoukankan      html  css  js  c++  java
  • 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)==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')"
  • 相关阅读:
    python
    UVA 10891——Game of Sum
    codeforces632E 小偷与商店
    NOIP2007——树网的核
    NOIP2014 提高组 Day2——寻找道路
    nodeoj2000——Freda's Chess
    BZOJ1012——[JSOI2008]最大数maxnumber
    poj2823-Sliding Window
    开博客了,大家好,这是ATHENS的博客。
    Linux简易APR内存池学习笔记(带源码和实例)
  • 原文地址:https://www.cnblogs.com/ayanmw/p/6700842.html
Copyright © 2011-2022 走看看