吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

低功耗模組LuatOS開發的iconv字符集轉換!

青山老竹農 ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2024-12-01 15:20 ? 次閱讀

本文講述的是低功耗4G模組LuatOS開發的iconv字符集轉換,我以大家常用的Air780E模組為例,從字符編碼介紹、演示功能概述、演示硬件環境、演示軟件環境、軟硬件資料等全面講述。

一、字符編碼介紹

1.1 字符編碼的定義與作用

字符編碼(Character encoding)是指將字符集中的字符編碼為指定集合中的某一對象(例如:比特模式、自然數序列、8 位組或者電脈沖),以便文本在計算機中存儲或通過通信網絡傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和 ASCII,其中 ASCII 使用 7 個或 8 個二進制位進行編碼,最多可以給 256 個字符分配數值。

1.2 常見字符編碼格式

ASCII:使用 7 個或 8 個二進制位進行編碼,最多可以給 256 個字符分配數值,包括字母、數字和符號。

Unicode:一種國際標準字符集,支持世界上幾乎所有的書寫系統,包括漢字、日文假名等。

UTF-8:Unicode 的一種變長字符編碼,由 Ken Thompson 于 1992 年創建,現已標準化為 RFC 3629。UTF-8 用 1 到 6 個字節編碼 Unicode 字符。

GB2312:中國國家標準字符集,用于簡體中文。

GBK:在 GB2312 基礎上擴展的字符集,支持更多的中文字符。

Big5:用于繁體中文的字符集。

1.3 字符編碼格式的使用場景和注意事項

在使用不同的字符編碼格式時,需要注意以下幾點:

兼容性:確保發送端和接收端使用相同的字符編碼,避免亂碼問題。

轉換規則:了解 Unicode 和 UTF-8 之間的轉換規則,確保正確編碼和解碼。

應用場景:根據具體應用場景選擇合適的字符編碼格式,例如 Web 開發中常用 UTF-8。

二、演示功能概述

本文演示主要展示了在不同編碼格式之間進行轉換的工具和方法,包括 Unicode(小端和大端)、GB2312 和 UTF-8 等常見編碼格式。通過使用 Lua 語言和 Air780E 核心板,實現了以下功能:

Unicode 小端編碼與 GB2312 編碼之間的轉換。

Unicode 大端編碼與 GB2312 編碼之間的轉換。

Unicode 小端編碼與 UTF-8 編碼之間的轉換。

Unicode 大端編碼與 UTF-8 編碼之間的轉換。

GB2312 編碼與 UTF-8 編碼之間的轉換。

此外,還提供了一個簡單的 Lua 腳本,用于在不同編碼之間進行轉換測試,并打印出轉換后的編碼數據。通過這個演示,大家可以了解不同編碼格式之間的轉換規則,并在實際應用中進行編碼轉換。

三、演示硬件環境

3.1 開發板

本文以 Air780E 核心板為例,如下圖所示:

wKgZO2dJnI6Acek0AAL-HOor8Zs838.png

詳細使用說明參考:
https://docs.openluat.com/air780e/product/

Air780E 產品手冊中的 《開發板Core_Air780E使用說明VX.X.X.pdf》,寫這篇文章時最新版本的使用說明為:《開發板Core_Air780E使用說明V1.0.5.pdf》 ;若在使用過程中遇到任何問題,可以直接參考這份使用說明 PDF 文檔。

3.2 SIM

在中國大陸環境下,使用移動,電信,聯通的物聯網卡或者手機卡都可以。

3.3 PC 電腦

WIN7以及以上版本的WINDOWS系統。

3.4 數據通信

1. USBType-C 數據線

它的一端是 USB 接口,另一端是 Type-C 接口。

wKgZO2dJnJ6AKOdUAASRUQJACSk596.png

四、演示軟件環境

4.1 Luatools 下載調試工具

Luatools 工具支持最新固件獲取、固件打包、trace 打印及單機燒錄等功能。

工具使用說明參考:
Luatools下載和詳細使用
https://docs.openluat.com/Luatools/

4.2 源碼及固件

1. 底層 core下載地址:
https://docs.openluat.com/air780e/luatos/firmware/

由于 Air780E 默認固件不支持 iconv 庫,所以此處只放一個默認固件下載位置。要想使用 iconv 庫,則需要進行云編譯。使用指南參考:?? 云編譯 - LuatOS 文檔本文使用的支持 iconv 庫的底層 core 固件,已經放到下文第 3 點的 iconv.zip 中,可以直接使用

2. demo 位置

本 demo 主要用于演示在 LuatOS 系統中不同編碼格式之間的相互轉換

demo 位置參考:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/iconv

3. 源碼及固件已打包壓縮,如下所示

壓縮包中 core 文件夾存放的是固件,code 文件夾存放的是腳本代碼。

五、軟硬件資料

5.1 iconv 操作庫介紹

需要注意,Air780E 默認固件不帶 iconv 庫,需要進行云編譯添加。云編譯操作指南參考:
?? 云編譯 - LuatOS 文檔
https://wiki.luatos.com/develop/compile/Cloud_compilation.html

5.1.1 iconv 庫說明

這個庫是一個用于在 Lua 中執行字符集轉換的模塊,稱為 iconv。它提供了多種功能,允許用戶在不同的字符編碼之間進行轉換。

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. 點擊項目管理測試

wKgZPGdJnMCASb5kAAEvPgP4TyM439.png

3. 根據圖示操作

注意,大家只需要跟著做到第四步即可,第五步跟著后面的操作再做。

wKgZO2dJnM-AVyTxAAUojdl6NRo491.png

5.2.2 燒錄

1. 將 Air780E 核心板通過 USB 數據線連接至電腦,如下圖所示:

wKgZO2dJngaACrqCAA0fhASUTBs583.png


2. 根據下方操作進行燒錄

此時就需要大家先點擊 Luatools 工具上的 下載底層與腳本/下載腳本,再執行下方操作了。

開發板處于未開機狀態:此時先按住下載模式按鍵(BOOT 鍵)不放,再長按開機鍵(POW 鍵)開機,若不出意外開發板將會進入下載模式,Luatools 工具下載進度條會開始跑,這時便可以松開 BOOT 鍵和 POW 鍵,等到工具提示下載完成即可。

開發板已經處于開機狀態:此時可以先按住 BOOT 鍵不放,再短按復位鍵(RST 鍵)后開發板會重啟并進入下載模式。

5.2.3 不同模式下的端口顯示

1. 正常開機模式

wKgZO2dJnh-AZIC7AAJjvmxIesE324.png

2. 下載模式

wKgZO2dJniqAfqOiAAJuKoLAdSE649.png

六、功能驗證

6.1 代碼示例介紹

本文所用 Lua 代碼是一個編碼轉換工具,主要用于在不同編碼格式之間進行轉換,包括 Unicode(小端和大端)、GB2312 和 UTF-8。以下是各個部分的詳細介紹:

6.1.1 核心信息

PROJECT 和 VERSION 變量用于標識項目的名稱和版本。

PRODUCT_KEY 是一個示例密鑰,用戶需根據實際情況進行替換。

通過 require 引用系統庫 sys 和 sysplus。

6.1.2 編碼轉換函數

Unicode 小端與 GB2312 轉換

ucs2ToGb2312(ucs2s):將 Unicode 小端編碼轉換為 GB2312 編碼。

gb2312ToUcs2(gb2312s):將 GB2312 編碼轉換為 Unicode 小端編碼。

Unicode 大端與 GB2312 轉換

ucs2beToGb2312(ucs2s):將 Unicode 大端編碼轉換為 GB2312 編碼。

gb2312ToUcs2be(gb2312s):將 GB2312 編碼轉換為 Unicode 大端編碼。

Unicode 小端與 UTF-8 轉換

ucs2ToUtf8(ucs2s):將 Unicode 小端編碼轉換為 UTF-8 編碼。

utf8ToUcs2(utf8s):將 UTF-8 編碼轉換為 Unicode 小端編碼。

Unicode 大端與 UTF-8 轉換

ucs2beToUtf8(ucs2s):將 Unicode 大端編碼轉換為 UTF-8 編碼。

utf8ToUcs2be(utf8s):將 UTF-8 編碼轉換為 Unicode 大端編碼。

GB2312 與 UTF-8 轉換

utf8ToGb2312(utf8s):將 UTF-8 編碼轉換為 GB2312 編碼。

gb2312ToUtf8(gb2312s):將 GB2312 編碼轉換為 UTF-8 編碼。

6.1.3 測試函數

代碼中定義了一些測試函數,用于驗證編碼轉換的正確性,并且打印出轉換后的編碼數據:

testucs2ToGb2312(ucs2s):測試 Unicode 小端到 GB2312 的轉換。

testgb2312ToUcs2(gd2312num):測試 GB2312 到 Unicode 小端的轉換。

testucs2beToGb2312(ucs2s):測試 Unicode 大端到 GB2312 的轉換。

testgb2312ToUcs2be(gb2312s):測試 GB2312 到 Unicode 大端的轉換。

testucs2ToUtf8(usc2):測試 Unicode 小端到 UTF-8 的轉換。

testutf8ToGb2312(utf8s):測試 UTF-8 到 GB2312 的轉換。

testgb2312ToUtf8(gb2312s):測試 GB2312 到 UTF-8 的轉換。

6.1.4 主循環

在主任務中,使用 sys.taskInit 定義一個循環,不斷進行編碼轉換測試,每隔一秒循環一次。

6.1.5 結尾

最后,通過 sys.run()啟動系統運行,確保程序按預期執行。

6.2 完整代碼展示

wKgZO2dJnk6AHoqaAATxgRMc1-I520.pngwKgZO2dJnmuAPYyxAAWpcx44NbY695.pngwKgZO2dJnnuACHBuAAU-I-vmjz8311.pngwKgZPGdJnoqAcASmAATwJCoNN9M611.pngwKgZO2dJnpeAQfclAAWBJXWR5O0854.pngwKgZPGdJnqWAXyGeAAR27L9Fh18739.pngwKgZO2dJnriAGnWYAAW6Tq_IXSc950.pngwKgZO2dJnseAWxYJAAUKaJ5Qebs836.pngwKgZO2dJntqAcFwPAAVjLNvr4ZQ669.pngwKgZPGdJnuyAQPOEAAN0LCjfIro289.pngwKgZPGdJnvyAbaGEAAV9QYpKsnI801.png

6.3 運行結果展示

通過 Luatoos 工具查看

wKgZO2dJnweAPbdgAApVoMhxHiY789.png

七、總結

本文演示通過對不同字符編碼格式的介紹和實際轉換操作,使得大家更加了解了字符編碼在計算機通信中的重要性,以及如何在不同編碼格式之間進行轉換。演示中使用的工具和硬件環境為 Air780E 核心板和 Lua 編程語言,通過實際編碼轉換的例子,展示了字符編碼轉換在實際應用中的重要性。

在演示中,我們介紹了 Unicode(小端和大端)、GB2312 和 UTF-8 等常見編碼格式,并展示了如何在 Lua 中使用 iconv 庫進行編碼轉換。通過這個演示,大家可以了解到不同編碼格式之間的差異,以及在不同場景下如何選擇合適的編碼格式。

此外,我們還提供了一個簡單的 Lua 腳本,用于在不同編碼之間進行轉換測試,并打印出轉換后的編碼數據。這個腳本可以幫助大家更好地理解和掌握字符編碼轉換的原理和方法。

分享完畢

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 低功耗
    +關注

    關注

    10

    文章

    2418

    瀏覽量

    103895
  • 模組
    +關注

    關注

    6

    文章

    1515

    瀏覽量

    30604
  • LuatOS
    +關注

    關注

    0

    文章

    76

    瀏覽量

    2000
收藏 人收藏

    評論

    相關推薦

    如何查詢Oracle client端的字符集

    什么是Oracle字符集?如何查詢dmp文件的字符集?如何查詢Oracle client端的字符集
    發表于 05-26 06:42

    RISC-V MCU IDE MRS(MounRiver Studio)開發之:設置工程編碼字符集

    、Unicode、UTF-8、UTF-16等。而不同的集成開發環境,其默認的字符集也不同,當涉及到IDE間工程遷移需求時,我們往往需要更改該工程在目標IDE下的編碼字符集。以RISC-V IDE
    發表于 11-23 10:20

    怎樣去使用C語言字符集呢?有哪些規則

    C語言字符集的特點有哪些呢?怎樣去使用C語言字符集呢?有哪些規則?
    發表于 02-25 07:43

    python正則表達式字符集

    字符集是由一對方括號 “[]” 括起來的字符集合。使用字符集,可以匹配多個字符中的一個。舉個例子,比如你使用 C[ET]O 匹配到的是 CEO 或 CTO ,也就是說 [ET] 代表的
    發表于 03-17 16:48

    字符集和字庫有什么聯系?

    字符集和字庫 是同一個對象嗎
    發表于 10-12 06:29

    LCD液晶顯示漢字字符集

    LCD液晶顯示漢字字符集
    發表于 12-23 02:02 ?0次下載

    字符集字符集編碼詳解

    字符集字符集編碼詳解
    發表于 09-12 08:33 ?4次下載
    <b class='flag-5'>字符集</b>與<b class='flag-5'>字符集</b>編碼詳解

    python正則表達式字符集

    字符集是由一對方括號 “[]” 括起來的字符集合。使用字符集,可以匹配多個字符中的一個。 舉個例子,比如你使用 C[ET]O 匹配到的是 CEO 或 CTO ,也就是說 [ET] 代表
    的頭像 發表于 03-17 16:48 ?1265次閱讀

    一文帶你搞懂字符集編碼

    軟件開發人員經常遇到“中文亂碼”、“軟件不能顯示日文”等類似問題。真相只有一個——對字符集編碼沒有一個系統的認知。
    的頭像 發表于 06-09 10:20 ?1599次閱讀
    一文帶你搞懂<b class='flag-5'>字符集</b>編碼

    一文詳解字符集編碼

    軟件開發人員經常遇到“中文亂碼”、“軟件不能顯示日文”等類似問題。真相只有一個——對字符集編碼沒有一個系統的認知。
    的頭像 發表于 07-18 09:57 ?696次閱讀
    一文詳解<b class='flag-5'>字符集</b>編碼

    mysql8.0默認字符集是什么

    MySQL 8.0 默認字符集是 utf8mb4。 MySQL 8.0 是當前最新的開源關系型數據庫管理系統,由Oracle公司開發和維護。MySQL 8.0 默認字符集是 utf8mb4,這個
    的頭像 發表于 11-16 14:48 ?1894次閱讀

    4G模組LuatOS開發|iconv字符集轉換技術篇

    本次我要講的是4G模組LuatOS開發iconv字符集轉換,已整理成文,今天便分享供大家。
    的頭像 發表于 11-30 09:53 ?275次閱讀
    4G<b class='flag-5'>模組</b><b class='flag-5'>LuatOS</b><b class='flag-5'>開發</b>|<b class='flag-5'>iconv</b><b class='flag-5'>字符集</b><b class='flag-5'>轉換</b>技術篇

    藏箱子里Air724UG模組LuatOS開發的HTTP示例!

    今天我們來學習的是我珍藏已久的低功耗模組Air724UG的LuatOS開發HTTP示例,獻給大家。
    的頭像 發表于 11-30 09:42 ?313次閱讀
    藏箱子里Air724UG<b class='flag-5'>模組</b><b class='flag-5'>LuatOS</b><b class='flag-5'>開發</b>的HTTP示例!

    4G模組Air780E的LuatOS開發之位運算(bit)示例

    本文我要說的是低功耗4G模組Air780E的LuatOS開發,關于位運算(bit)示例,我將詳細解析分享給大家。
    的頭像 發表于 12-02 14:33 ?226次閱讀
    4G<b class='flag-5'>模組</b>Air780E的<b class='flag-5'>LuatOS</b><b class='flag-5'>開發</b>之位運算(bit)示例

    來來來,看這里:低功耗模組LuatOS開發的日志輸出!

    本文以低功耗4G模組Air780E為例,學會低功耗模組LuatOS開發的日志輸出,積累技術。
    的頭像 發表于 12-05 09:09 ?273次閱讀
    來來來,看這里:<b class='flag-5'>低功耗</b><b class='flag-5'>模組</b><b class='flag-5'>LuatOS</b><b class='flag-5'>開發</b>的日志輸出!
    百家乐官网玩法及技巧| 百家乐技巧微笑心法| 保德县| 名人百家乐的玩法技巧和规则 | 长乐坊百家乐娱乐城| 百家乐官网路单之我见| 百家乐庄最高连开几把| 金沙百家乐官网的玩法技巧和规则| 大发888娱乐场ylc8| 永利博百家乐游戏| 百家乐官网分析仪博彩正网| 威尼斯人娱乐城是真的吗| 百家乐官网缩水软件| 乌拉特后旗| 百家乐不锈钢| 百家乐官网缩水工具| 百家乐官网如何稳赢| 威尼斯人娱乐城--老品牌值得您信赖| 百家乐任你博娱乐网| 红树林百家乐官网的玩法技巧和规则| 新乐界娱乐城| 威尼斯人娱乐城真钱百家乐| 赌百家乐官网2号破解| 美高梅娱乐城网址| 玩百家乐的高手| 海王星百家乐官网的玩法技巧和规则| 平江县| 大发888扑克下载| 大发百家乐现金| 百家乐官网五湖四海赌场娱乐网规则 | 百家乐官网园首选| 百家乐官网赢钱好公式| 莆田棋牌迷| 乐宝百家乐的玩法技巧和规则| 百家乐看单技术| 豪博百家乐官网娱乐城| 通山县| 大发888大发8668| 网络百家乐程序| 真让百家乐游戏开户| 百家乐官网扫瞄光纤洗牌机扑克洗牌机扑克洗牌机 |