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.pswp.cn/news/254848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254848.shtml
英文地址,請注明出處:http://en.pswp.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自定義應…