0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

4G模组LuatOS开发|iconv字符集转换技术篇

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2024-11-30 09:53 次阅读

本次我要讲的是4G模组LuatOS开发的iconv字符集转换,已整理成文,今天便分享供大家。

一、字符编码介绍

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 核心板为例,如下图所示:

wKgZomdAqzqAR3o8AAKSEk2OmJE599.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 接口。

wKgaomdAq0qAUsTPAARyY3mFiyE196.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. 点击项目管理测试

wKgaomdAq2iAXgSdAAEDCX-4se0962.png

3. 根据图示操作

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

wKgZomdAq3aABUqwAARdLYrLb3o510.png

5.2.2 烧录

1. 将 Air780E 核心板通过 USB 数据线连接至电脑,如下图所示:

wKgZomdAq4aARsfJAAg2zJa_eP4464.png


2. 根据下方操作进行烧录

此时就需要大家先点击 Luatools 工具上的 下载底层与脚本/下载脚本,再执行下方操作了。

开发板处于未开机状态:此时先按住下载模式按键(BOOT 键)不放,再长按开机键(POW 键)开机,若不出意外开发板将会进入下载模式,Luatools 工具下载进度条会开始跑,这时便可以松开 BOOT 键和 POW 键,等到工具提示下载完成即可。

开发板已经处于开机状态:此时可以先按住 BOOT 键不放,再短按复位键(RST 键)后开发板会重启并进入下载模式。

5.2.3 不同模式下的端口显示

wKgaomdAq5qAAhd9AAQd6GgaCD4761.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 完整代码展示

wKgZomdAq8uALf_xAAUYDBoLVr0292.pngwKgaomdAq9mATFtTAAS77PRxug4375.pngwKgZomdAq-aAD-LtAATvkJRqv_c641.pngwKgaomdAq_eAM1OuAATg3Uvnmh4601.pngwKgZomdArAuAN4TqAARUeJYEHVI607.pngwKgaomdArBmACCWcAATPJ9g9IeI137.pngwKgZomdArCaAXBlGAASVcljFqRs488.pngwKgZomdArDaAOCBfAAQBLu2EKFo490.pngwKgZomdArEWAdaqvAAQ7U6Oan8A505.pngwKgaomdArFSAGUTCAAUK6lxWBX8933.pngwKgaomdArGCAE-t0AABiFt9xyl4982.png

6.3 运行结果展示

通过 Luatoos 工具查看

wKgZomdArG2Ab-N1AAin-dqHYjY492.png

七、总结

本文演示通过对不同字符编码格式的介绍和实际转换操作,使得大家更加了解了字符编码在计算机通信中的重要性,以及如何在不同编码格式之间进行转换。演示中使用的工具和硬件环境为 Air780E 核心板和 Lua 编程语言,通过实际编码转换的例子,展示了字符编码转换在实际应用中的重要性。

在演示中,我们介绍了 Unicode(小端和大端)、GB2312 和 UTF-8 等常见编码格式,并展示了如何在 Lua 中使用 iconv 库进行编码转换。通过这个演示,大家可以了解到不同编码格式之间的差异,以及在不同场景下如何选择合适的编码格式。

此外,我们还提供了一个简单的 Lua 脚本,用于在不同编码之间进行转换测试,并打印出转换后的编码数据。这个脚本可以帮助大家更好地理解和掌握字符编码转换的原理和方法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码
    +关注

    关注

    6

    文章

    936

    浏览量

    54771
  • 字符
    +关注

    关注

    0

    文章

    233

    浏览量

    25182
  • 模组
    +关注

    关注

    6

    文章

    1450

    浏览量

    30306
  • LuatOS
    +关注

    关注

    0

    文章

    66

    浏览量

    1929
收藏 人收藏

    评论

    相关推荐

    4G 模组 HTTP 网络协议应用 白嫖版!

    今天我们来白嫖的是Air780E模组LuatOS开发4G通信中HTTP网络协议的应用,实现模组和服务器之间数据的传输,详细介绍硬件环境、软件
    的头像 发表于 10-30 14:22 699次阅读
    <b class='flag-5'>4G</b> <b class='flag-5'>模组</b> HTTP 网络协议应用 白嫖版!

    如何查询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>编码详解

    一文带你搞懂字符集编码

    软件开发人员经常遇到“中文乱码”、“软件不能显示日文”等类似问题。真相只有一个——对字符集编码没有一个系统的认知。
    的头像 发表于 06-09 10:20 1458次阅读
    一文带你搞懂<b class='flag-5'>字符集</b>编码

    一文详解字符集编码

    软件开发人员经常遇到“中文乱码”、“软件不能显示日文”等类似问题。真相只有一个——对字符集编码没有一个系统的认知。
    的头像 发表于 07-18 09:57 624次阅读
    一文详解<b class='flag-5'>字符集</b>编码

    mysql8.0默认字符集是什么

    MySQL 8.0 默认字符集是 utf8mb4。 MySQL 8.0 是当前最新的开源关系型数据库管理系统,由Oracle公司开发和维护。MySQL 8.0 默认字符集是 utf8m
    的头像 发表于 11-16 14:48 1764次阅读

    SPI与4G模组的集成:技术要领

    今天咋们要讲的是SPI与4G模组技术要领,以低功耗模组Air724UG为例,展示给大家学习。
    的头像 发表于 11-20 23:25 126次阅读
    SPI与<b class='flag-5'>4G</b><b class='flag-5'>模组</b>的集成:<b class='flag-5'>技术</b>要领<b class='flag-5'>篇</b>

    关于4G模组LuatOS开发:通用加解密函数(crypto)|全攻略

    本次我要说的攻略是关于4G模组LuatOS开发的通用加解密函数,我以我常用的Air780E模组为例子供大家参考。
    的头像 发表于 11-30 09:52 41次阅读
    关于<b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>LuatOS</b><b class='flag-5'>开发</b>:通用加解密函数(crypto)|全攻略

    LuatOS开发4G模组随机数(random)|实战指南

    本次学习的实战是关于4G模组LuatOS开发的随机数示例指南,希望大家有所收获。
    的头像 发表于 11-30 09:51 36次阅读
    <b class='flag-5'>LuatOS</b><b class='flag-5'>开发</b>之<b class='flag-5'>4G</b><b class='flag-5'>模组</b>随机数(random)|实战指南

    Air780E模组LuatOS开发的位运算(bit)教程

    本次我们要学习的是4G模组Air780E的LuatOS开发,关于位运算(bit)教程分享给大家。
    的头像 发表于 11-26 11:58 48次阅读
    Air780E<b class='flag-5'>模组</b><b class='flag-5'>LuatOS</b><b class='flag-5'>开发</b>的位运算(bit)教程<b class='flag-5'>篇</b>!