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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

日志中出现乱码_合宙Luat | 乱码搞得一团糟?开源神器帮你轻松修复

發(fā)布時(shí)間:2025/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 日志中出现乱码_合宙Luat | 乱码搞得一团糟?开源神器帮你轻松修复 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

鎰熸仼鐩擱亣

緹庡ソ鐨勬椂鍏変笌澶у鐩鎬即

2021錛屾柊騫村揩涔愶紒

相信大家在日常生活中,都見(jiàn)過(guò)類似上面的字符串。這些看起來(lái)不明所以的內(nèi)容,通常被稱作亂碼。

那么亂碼是如何產(chǎn)生的,并且如何修復(fù)呢?我們接下來(lái)將一步步講解。

1

你須知道的編碼規(guī)則


字符串,本質(zhì)上都是一個(gè)字節(jié)一個(gè)字節(jié)的數(shù)據(jù),連在一起存儲(chǔ)的。而要將這些數(shù)據(jù)顯示在屏幕上,則需要按一種編碼規(guī)則進(jìn)行解析。

ASCII編碼


ASCII編碼是最容易理解的。ASCII編碼因?yàn)槊總€(gè)字符僅占用7bit,所以最多只能存儲(chǔ)127個(gè)字符,而每個(gè)字符都有唯一的一個(gè)數(shù)字與其對(duì)應(yīng)。

例如:

  • 數(shù)字0x35在這種編碼規(guī)則下,會(huì)被解析為字符5;

  • 數(shù)字0x6C在這種編碼規(guī)則下,會(huì)被解析為字符l ;

  • 數(shù)字0x4C在這種編碼規(guī)則下,會(huì)被解析為字符L;

具體對(duì)應(yīng)規(guī)則,可以在網(wǎng)上搜索ASCII 碼表查看。

按照這種規(guī)則,一串hello,用16進(jìn)制數(shù)據(jù)表示就是:

68 65 6C 6C 6F

GB2312編碼


因?yàn)锳SCII只能顯示127個(gè)字符,遠(yuǎn)遠(yuǎn)不能滿足中文字符的顯示需求,所以中國(guó)國(guó)家標(biāo)準(zhǔn)總局于1980年發(fā)布了國(guó)家標(biāo)準(zhǔn)代碼GB2312標(biāo)準(zhǔn)(目前最新標(biāo)準(zhǔn)為GB18030)。

簡(jiǎn)單來(lái)說(shuō),在這套編碼規(guī)范下,每個(gè)中文字符可以由2個(gè)字節(jié)表示,例如:

  • 啊?的實(shí)際數(shù)據(jù)為0xB0 0xA1 ;

  • 測(cè)?的實(shí)際數(shù)據(jù)為0xB2 0xE2 ;

  • 試?的實(shí)際數(shù)據(jù)為0xCA 0xD4 。

同時(shí),因?yàn)锳SCII編碼下每字節(jié)使用了7bit(0x00-0x7f ),GB2312為了對(duì)其進(jìn)行兼容,規(guī)定每個(gè)中文字符的高位字節(jié)(第一個(gè)字節(jié))使用0xA1–0xF7的范圍,避開(kāi)了ASCII編碼使用的區(qū)域。

也就是說(shuō),象下面的一串混用了中英文的數(shù)據(jù),也可以正常被解析并顯示出來(lái):

B2 E2 CA D4 31 32 33 B2 E2 CA D4

實(shí)際內(nèi)容:

B2 E2(測(cè)) CA D4(試) 31(1) 32(2) 33(3) B2 E2(測(cè)) CA D4(試)

UTF-8編碼


UTF-8可以使用1-4字節(jié)來(lái)表示字符,因?yàn)槠浼嫒菪詮?qiáng),可以對(duì)Unicode字符集中的所有有效編碼點(diǎn)進(jìn)行編碼,是目前使用最廣泛的編碼標(biāo)準(zhǔn)。

與GB2312一樣,UTF-8同樣兼容ASCII編碼。只是UTF-8比GB2312包含了更多字符,并且每種字符的字節(jié)數(shù)并不是完全固定的。

由于編碼規(guī)則比較復(fù)雜,這里不作具體解釋,僅舉例說(shuō)明:

  • 啊?的實(shí)際數(shù)據(jù)為0xE5 0x95 0x8A;

  • 測(cè)?的實(shí)際數(shù)據(jù)為0xE6 0xB5 0x8B;

  • 試?的實(shí)際數(shù)據(jù)為0xE8 0xAF 0x95。

其他編碼


除了ASCII、GB2312和UTF-8編碼,還有許多編碼標(biāo)準(zhǔn),他們大部分互不兼容。

2

存儲(chǔ)和傳輸字符串?dāng)?shù)據(jù)


數(shù)據(jù)都是要進(jìn)行存儲(chǔ)和傳輸?shù)?#xff0c;與編碼息息相關(guān)。

  • 存儲(chǔ)

微軟使用BOM頭這種技術(shù)來(lái)為純文本文件標(biāo)記其編碼,這樣打開(kāi)文件時(shí)就可以用正確的編碼進(jìn)行解析。

而大部分Linux不使用類似技術(shù),所以讀取后只能靠猜測(cè),或強(qiáng)行指定,來(lái)進(jìn)行顯示。

  • 傳輸

傳輸不僅指字符串?dāng)?shù)據(jù)在互聯(lián)網(wǎng)上的傳輸,也包括了在各類函數(shù)調(diào)用過(guò)程中的傳輸。這類操作通常都不會(huì)帶有字符編碼標(biāo)準(zhǔn)的標(biāo)記,一般靠直接指定編碼來(lái)解決。

3

為何會(huì)產(chǎn)生亂碼


聰明的你應(yīng)該已經(jīng)想到了,如果一串某編碼的數(shù)據(jù),被人使用另一種編碼標(biāo)準(zhǔn)進(jìn)行解析,那么得出的結(jié)果幾乎一定是錯(cuò)誤的。

比如測(cè)試解析結(jié)果這幾個(gè)字,我們使用UTF-8編碼,得到下面16進(jìn)制數(shù)據(jù):

E6B58BE8AF95E8A7A3E69E90E7BB93E69E9C

如果,收到這些數(shù)據(jù)的人嘗試使用GB2312編碼來(lái)顯示,那么結(jié)果就是我們非常熟悉的亂碼了:

嫻嬭瘯瑙f瀽緇撴灉

上面的過(guò)程就是典型的亂碼形成過(guò)程。

4

如何修復(fù)亂碼


亂碼是否可以還原?答案是肯定的,只需要按亂碼形成時(shí)的操作反過(guò)來(lái)做一遍就可以恢復(fù)了。但是有些編碼中會(huì)出現(xiàn)?這種無(wú)法解析顯示的數(shù)據(jù),這部分?jǐn)?shù)據(jù)就完全丟失了。

一般的亂碼修復(fù)操作,就是把各種編碼可能性都試一遍,看哪個(gè)結(jié)果可靠,那么就是原始內(nèi)容。

這里推薦使用開(kāi)源工具—— LLCOM (llcom.papapoi.com),來(lái)進(jìn)行亂碼恢復(fù)工作。

LLCOM

可運(yùn)行Lua腳本的高自由度串口調(diào)試工具。

  • 可獨(dú)立運(yùn)行Lua腳本,并擁有定時(shí)器與協(xié)程任務(wù)特性(移植自合宙Luat Task架構(gòu));
  • 其他串口調(diào)試功能具有的功能;
  • 收發(fā)日志清晰明了,同時(shí)顯示HEX值與實(shí)際字符串;
  • 自動(dòng)保存串口與Lua腳本日志,并附帶時(shí)間;
  • 串口斷開(kāi)后,如果再次連接,會(huì)自動(dòng)重連;
  • 發(fā)送的數(shù)據(jù)可被用戶自定義的Lua腳本提前處理;
  • 右側(cè)快捷發(fā)送欄,快捷發(fā)送條目數(shù)量不限制。

更多精彩,敬請(qǐng)期待!

我們用上一節(jié)生成的亂碼數(shù)據(jù)作為例子,嘗試修復(fù):

可以看到可靠的結(jié)果已經(jīng)顯示出來(lái),修復(fù)成功。

5

如何避免亂碼


建議在寫代碼時(shí)統(tǒng)一使用UTF-8編碼,這是目前互聯(lián)網(wǎng)的最主要的編碼形式。

如果是資源占用緊張,但依舊需要中文顯示的地方,可以考慮使用GB2312編碼存儲(chǔ)數(shù)據(jù)。

了解合宙Luat開(kāi)源架構(gòu):


Luat = Lua + AT,合宙推出的物聯(lián)網(wǎng)創(chuàng)新開(kāi)源架構(gòu),依托于通信模塊做簡(jiǎn)易快捷的開(kāi)發(fā),將傳統(tǒng)的AT命令用Lua語(yǔ)言封裝成API,并提供各種功能應(yīng)用的demo,大大減少用戶的開(kāi)發(fā)成本。

Luat入門教程

http://doc.openluat.com/wiki/3?wiki_page_id=606

  • 開(kāi)發(fā)指南

  • 白話Lua教程

  • 簡(jiǎn)明Lua語(yǔ)法

  • LuaTools

  • 第一個(gè)工程

  • Luat框架

  • Luat API接口 (2G)

  • Luat API接口 (4G)

  • LuaTask 庫(kù)消息和注解

  • Luat云平臺(tái)

今天就分享到這里,你學(xué)會(huì)了嗎

本文將持續(xù)在Luat社區(qū)更新

http://doc.openluat.com/article/2113/0

- 歡迎加入Luat 社區(qū) -

社區(qū)賬戶與ERP系統(tǒng)通用

Lua教程?|?模塊資料?|?問(wèn)答系統(tǒng)?|?工具下載?| 經(jīng)驗(yàn)分享

快來(lái)領(lǐng)取專屬福利~

方式一:留言互動(dòng)

參與微信公眾號(hào)合宙Luat的最新推文留言互動(dòng),最先留言的前五位朋友可獲贈(zèng)五折券一張;

方式二:好友助力

關(guān)注合宙Luat公眾號(hào)并后臺(tái)留言:五折券,獲取助力碼后每邀請(qǐng)五位好友成功助力,即可獲得五折券一張,多分享多獲贈(zèng)。

合宙商城五折券使用說(shuō)明:

由合宙Luat公眾號(hào)菜單【合宙商城】進(jìn)入,商城全場(chǎng)除團(tuán)購(gòu)、限量特價(jià)外均可使用。每個(gè)訂單結(jié)算限使用一張,每張券最多可購(gòu)買相同或不同產(chǎn)品共計(jì)3個(gè),不與其他優(yōu)惠活動(dòng)疊加。


- 合宙Cat.1技術(shù)QQ群 -

合宙Luat (Cat.1模塊) 1群:1092305811

合宙Luat (Cat.1模塊) 2群:8771645550

每個(gè)建議都值得關(guān)注

每個(gè)技能都值得分享

更多精彩等你來(lái)參與

千人級(jí)專業(yè)人士技術(shù)交流群,

模組開(kāi)發(fā)、行業(yè)應(yīng)用、知識(shí)分享包羅萬(wàn)象,

談笑間輕松獲取最前沿最實(shí)用的物聯(lián)網(wǎng)資訊!

- 合宙Cat.1生態(tài)應(yīng)用案例 -


柏來(lái)Cat.1智能充電插座

大彩科技醫(yī)用級(jí)4G串口屏

研色智能LED背包/車載互動(dòng)屏

速銳得車聯(lián)網(wǎng)4G版T-BOX

米老師Cat.1電話核心板

世紀(jì)華寧Cat.1路由器&DTU

蜜連科技Cat.1智能口罩售賣機(jī)

總結(jié)

以上是生活随笔為你收集整理的日志中出现乱码_合宙Luat | 乱码搞得一团糟?开源神器帮你轻松修复的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。