本次我要講的是4G模組LuatOS開發(fā)的iconv字符集轉(zhuǎn)換,已整理成文,今天便分享供大家。
一、字符編碼介紹
1.1 字符編碼的定義與作用
字符編碼(Character encoding)是指將字符集中的字符編碼為指定集合中的某一對(duì)象(例如:比特模式、自然數(shù)序列、8 位組或者電脈沖),以便文本在計(jì)算機(jī)中存儲(chǔ)或通過通信網(wǎng)絡(luò)傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和 ASCII,其中 ASCII 使用 7 個(gè)或 8 個(gè)二進(jìn)制位進(jìn)行編碼,最多可以給 256 個(gè)字符分配數(shù)值。
1.2 常見字符編碼格式
ASCII:使用 7 個(gè)或 8 個(gè)二進(jìn)制位進(jìn)行編碼,最多可以給 256 個(gè)字符分配數(shù)值,包括字母、數(shù)字和符號(hào)。
Unicode:一種國際標(biāo)準(zhǔn)字符集,支持世界上幾乎所有的書寫系統(tǒng),包括漢字、日文假名等。
UTF-8:Unicode 的一種變長字符編碼,由 Ken Thompson 于 1992 年創(chuàng)建,現(xiàn)已標(biāo)準(zhǔn)化為 RFC 3629。UTF-8 用 1 到 6 個(gè)字節(jié)編碼 Unicode 字符。
GB2312:中國國家標(biāo)準(zhǔn)字符集,用于簡體中文。
GBK:在 GB2312 基礎(chǔ)上擴(kuò)展的字符集,支持更多的中文字符。
Big5:用于繁體中文的字符集。
1.3 字符編碼格式的使用場景和注意事項(xiàng)
在使用不同的字符編碼格式時(shí),需要注意以下幾點(diǎn):
兼容性:確保發(fā)送端和接收端使用相同的字符編碼,避免亂碼問題。
轉(zhuǎn)換規(guī)則:了解 Unicode 和 UTF-8 之間的轉(zhuǎn)換規(guī)則,確保正確編碼和解碼。
應(yīng)用場景:根據(jù)具體應(yīng)用場景選擇合適的字符編碼格式,例如 Web 開發(fā)中常用 UTF-8。
二、演示功能概述
本文演示主要展示了在不同編碼格式之間進(jìn)行轉(zhuǎn)換的工具和方法,包括 Unicode(小端和大端)、GB2312 和 UTF-8 等常見編碼格式。通過使用 Lua 語言和 Air780E 核心板,實(shí)現(xiàn)了以下功能:
Unicode 小端編碼與 GB2312 編碼之間的轉(zhuǎn)換。
Unicode 大端編碼與 GB2312 編碼之間的轉(zhuǎn)換。
Unicode 小端編碼與 UTF-8 編碼之間的轉(zhuǎn)換。
Unicode 大端編碼與 UTF-8 編碼之間的轉(zhuǎn)換。
GB2312 編碼與 UTF-8 編碼之間的轉(zhuǎn)換。
此外,還提供了一個(gè)簡單的 Lua 腳本,用于在不同編碼之間進(jìn)行轉(zhuǎn)換測(cè)試,并打印出轉(zhuǎn)換后的編碼數(shù)據(jù)。通過這個(gè)演示,大家可以了解不同編碼格式之間的轉(zhuǎn)換規(guī)則,并在實(shí)際應(yīng)用中進(jìn)行編碼轉(zhuǎn)換。
三、演示硬件環(huán)境
3.1 開發(fā)板
本文以 Air780E 核心板為例,如下圖所示:
詳細(xì)使用說明參考:
https://docs.openluat.com/air780e/product/
Air780E 產(chǎn)品手冊(cè)中的 《開發(fā)板Core_Air780E使用說明VX.X.X.pdf》,寫這篇文章時(shí)最新版本的使用說明為:《開發(fā)板Core_Air780E使用說明V1.0.5.pdf》 ;若在使用過程中遇到任何問題,可以直接參考這份使用說明 PDF 文檔。
3.2 SIM 卡
在中國大陸環(huán)境下,使用移動(dòng),電信,聯(lián)通的物聯(lián)網(wǎng)卡或者手機(jī)卡都可以。
3.3 PC 電腦
WIN7以及以上版本的WINDOWS系統(tǒng)。
3.4 數(shù)據(jù)通信線
1. USB 轉(zhuǎn) Type-C 數(shù)據(jù)線
它的一端是 USB 接口,另一端是 Type-C 接口。
四、演示軟件環(huán)境
4.1 Luatools 下載調(diào)試工具
Luatools 工具支持最新固件獲取、固件打包、trace 打印及單機(jī)燒錄等功能。
工具使用說明參考:
Luatools下載和詳細(xì)使用
https://docs.openluat.com/Luatools/
4.2 源碼及固件
1. 底層 core下載地址:
https://docs.openluat.com/air780e/luatos/firmware/
由于 Air780E 默認(rèn)固件不支持 iconv 庫,所以此處只放一個(gè)默認(rèn)固件下載位置。要想使用 iconv 庫,則需要進(jìn)行云編譯。使用指南參考:?? 云編譯 - LuatOS 文檔本文使用的支持 iconv 庫的底層 core 固件,已經(jīng)放到下文第 3 點(diǎn)的 iconv.zip 中,可以直接使用
2. demo 位置
本 demo 主要用于演示在 LuatOS 系統(tǒng)中不同編碼格式之間的相互轉(zhuǎn)換
demo 位置參考:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/iconv
3. 源碼及固件已打包壓縮,如下所示
壓縮包中 core 文件夾存放的是固件,code 文件夾存放的是腳本代碼。
五、軟硬件資料
5.1 iconv 操作庫介紹
需要注意,Air780E 默認(rèn)固件不帶 iconv 庫,需要進(jìn)行云編譯添加。云編譯操作指南參考:
?? 云編譯 - LuatOS 文檔
https://wiki.luatos.com/develop/compile/Cloud_compilation.html
5.1.1 iconv 庫說明
這個(gè)庫是一個(gè)用于在 Lua 中執(zhí)行字符集轉(zhuǎn)換的模塊,稱為 iconv。它提供了多種功能,允許用戶在不同的字符編碼之間進(jìn)行轉(zhuǎn)換。
5.1.2 API 接口介紹
本教程所使用 API 接口參考:
iconv - iconv 操作 - luatos@air780e - 合宙文檔中心https://docs.openluat.com/air780e/luatos/api/core/iconv/
5.2 Air780E 核心板燒錄說明
5.2.1 選擇固件和腳本
1. 打開 Luatools 工具
2. 點(diǎn)擊項(xiàng)目管理測(cè)試
3. 根據(jù)圖示操作
注意,大家只需要跟著做到第四步即可,第五步跟著后面的操作再做。
5.2.2 燒錄
1. 將 Air780E 核心板通過 USB 數(shù)據(jù)線連接至電腦,如下圖所示:
2. 根據(jù)下方操作進(jìn)行燒錄
此時(shí)就需要大家先點(diǎn)擊 Luatools 工具上的 下載底層與腳本/下載腳本,再執(zhí)行下方操作了。
開發(fā)板處于未開機(jī)狀態(tài):此時(shí)先按住下載模式按鍵(BOOT 鍵)不放,再長按開機(jī)鍵(POW 鍵)開機(jī),若不出意外開發(fā)板將會(huì)進(jìn)入下載模式,Luatools 工具下載進(jìn)度條會(huì)開始跑,這時(shí)便可以松開 BOOT 鍵和 POW 鍵,等到工具提示下載完成即可。
開發(fā)板已經(jīng)處于開機(jī)狀態(tài):此時(shí)可以先按住 BOOT 鍵不放,再短按復(fù)位鍵(RST 鍵)后開發(fā)板會(huì)重啟并進(jìn)入下載模式。
5.2.3 不同模式下的端口顯示
六、功能驗(yàn)證
6.1 代碼示例介紹
本文所用 Lua 代碼是一個(gè)編碼轉(zhuǎn)換工具,主要用于在不同編碼格式之間進(jìn)行轉(zhuǎn)換,包括 Unicode(小端和大端)、GB2312 和 UTF-8。以下是各個(gè)部分的詳細(xì)介紹:
6.1.1 核心信息
PROJECT 和 VERSION 變量用于標(biāo)識(shí)項(xiàng)目的名稱和版本。
PRODUCT_KEY 是一個(gè)示例密鑰,用戶需根據(jù)實(shí)際情況進(jìn)行替換。
通過 require 引用系統(tǒng)庫 sys 和 sysplus。
6.1.2 編碼轉(zhuǎn)換函數(shù)
Unicode 小端與 GB2312 轉(zhuǎn)換
ucs2ToGb2312(ucs2s):將 Unicode 小端編碼轉(zhuǎn)換為 GB2312 編碼。
gb2312ToUcs2(gb2312s):將 GB2312 編碼轉(zhuǎn)換為 Unicode 小端編碼。
Unicode 大端與 GB2312 轉(zhuǎn)換
ucs2beToGb2312(ucs2s):將 Unicode 大端編碼轉(zhuǎn)換為 GB2312 編碼。
gb2312ToUcs2be(gb2312s):將 GB2312 編碼轉(zhuǎn)換為 Unicode 大端編碼。
Unicode 小端與 UTF-8 轉(zhuǎn)換
ucs2ToUtf8(ucs2s):將 Unicode 小端編碼轉(zhuǎn)換為 UTF-8 編碼。
utf8ToUcs2(utf8s):將 UTF-8 編碼轉(zhuǎn)換為 Unicode 小端編碼。
Unicode 大端與 UTF-8 轉(zhuǎn)換
ucs2beToUtf8(ucs2s):將 Unicode 大端編碼轉(zhuǎn)換為 UTF-8 編碼。
utf8ToUcs2be(utf8s):將 UTF-8 編碼轉(zhuǎn)換為 Unicode 大端編碼。
GB2312 與 UTF-8 轉(zhuǎn)換
utf8ToGb2312(utf8s):將 UTF-8 編碼轉(zhuǎn)換為 GB2312 編碼。
gb2312ToUtf8(gb2312s):將 GB2312 編碼轉(zhuǎn)換為 UTF-8 編碼。
6.1.3 測(cè)試函數(shù)
代碼中定義了一些測(cè)試函數(shù),用于驗(yàn)證編碼轉(zhuǎn)換的正確性,并且打印出轉(zhuǎn)換后的編碼數(shù)據(jù):
testucs2ToGb2312(ucs2s):測(cè)試 Unicode 小端到 GB2312 的轉(zhuǎn)換。
testgb2312ToUcs2(gd2312num):測(cè)試 GB2312 到 Unicode 小端的轉(zhuǎn)換。
testucs2beToGb2312(ucs2s):測(cè)試 Unicode 大端到 GB2312 的轉(zhuǎn)換。
testgb2312ToUcs2be(gb2312s):測(cè)試 GB2312 到 Unicode 大端的轉(zhuǎn)換。
testucs2ToUtf8(usc2):測(cè)試 Unicode 小端到 UTF-8 的轉(zhuǎn)換。
testutf8ToGb2312(utf8s):測(cè)試 UTF-8 到 GB2312 的轉(zhuǎn)換。
testgb2312ToUtf8(gb2312s):測(cè)試 GB2312 到 UTF-8 的轉(zhuǎn)換。
6.1.4 主循環(huán)
在主任務(wù)中,使用 sys.taskInit 定義一個(gè)循環(huán),不斷進(jìn)行編碼轉(zhuǎn)換測(cè)試,每隔一秒循環(huán)一次。
6.1.5 結(jié)尾
最后,通過 sys.run()啟動(dòng)系統(tǒng)運(yùn)行,確保程序按預(yù)期執(zhí)行。
6.2 完整代碼展示
6.3 運(yùn)行結(jié)果展示
通過 Luatoos 工具查看
七、總結(jié)
本文演示通過對(duì)不同字符編碼格式的介紹和實(shí)際轉(zhuǎn)換操作,使得大家更加了解了字符編碼在計(jì)算機(jī)通信中的重要性,以及如何在不同編碼格式之間進(jìn)行轉(zhuǎn)換。演示中使用的工具和硬件環(huán)境為 Air780E 核心板和 Lua 編程語言,通過實(shí)際編碼轉(zhuǎn)換的例子,展示了字符編碼轉(zhuǎn)換在實(shí)際應(yīng)用中的重要性。
在演示中,我們介紹了 Unicode(小端和大端)、GB2312 和 UTF-8 等常見編碼格式,并展示了如何在 Lua 中使用 iconv 庫進(jìn)行編碼轉(zhuǎn)換。通過這個(gè)演示,大家可以了解到不同編碼格式之間的差異,以及在不同場景下如何選擇合適的編碼格式。
此外,我們還提供了一個(gè)簡單的 Lua 腳本,用于在不同編碼之間進(jìn)行轉(zhuǎn)換測(cè)試,并打印出轉(zhuǎn)換后的編碼數(shù)據(jù)。這個(gè)腳本可以幫助大家更好地理解和掌握字符編碼轉(zhuǎn)換的原理和方法。
-
編碼
+關(guān)注
關(guān)注
6文章
940瀏覽量
54814 -
字符
+關(guān)注
關(guān)注
0文章
233瀏覽量
25199 -
模組
+關(guān)注
關(guān)注
6文章
1487瀏覽量
30360 -
LuatOS
+關(guān)注
關(guān)注
0文章
76瀏覽量
1936
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論