日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的lua去掉字符串中的UTF-8的BOM三个字节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。