Lua 编码 CodePage CP936 Unicode UTF8 及 相关库library 整理

<div style="margin: 0 auto; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;”>

Lua 编码 CodePage CP936 Unicode UTF8 及 相关库library 整理

Lua 编码 CP936 UTF8 及 相关库 整理

Lua 编码 CP936 UTF8 及 相关库 整理

编辑器与编码

CMD,默认编码随系统——GBK|ANSI。

可用chcp切换编码:

读取与写入编码不一致时,显示为乱码。

lua使用可转换编码。

未整理

环境

Lua 5.3(Lua文档/文件UTF8),Win 10(CP936), (CP936)。

字符对应编码。

字符(符号/)与编码(code)相互映射。字符-编码->编码、编码-解码->字符。

编码可展现为数值(十进制、十六进制等),以字节(byte)为单位,一个字符的编码为一个或多个字节。

从编码的角度php cp936,可称为码表。

从字符被组织的角度,可称为字符集。

字符在码表中的编码,被称为编码位置(简称码位/code point/code )。

一个字符可以被多个码表描述,对应多种编码。

参考:汉字字符集编码查询;中文字符集编码:、BIG5、GBK、、

字符”·”的编码:无Lua 编码 CodePage CP936 Unicode UTF8 及 相关库library 整理,BIG5编码:A150php cp936,GBK编码:A1A4,编码:A1A4,编码:B7

字符”中”的编码:D6D0,BIG5编码:A4A4,GBK编码:D6D0,编码:D6D0,编码:4E2D

系统中码表称为代码页。

CHCP命令可查看、设置系统代码页。

命令位于C:\。

此路径被包含于PATH环境变量下,可在命令行CMD、Lua .使用。

,一个具体的码表,包含所有字符及其编码。

Lua文档/文件/代码中的字面字符(字面量/ )受Lua文件编码的影响(称为硬编码)。

如,字符”·”在utf8编码的文件中编码为194,183,在CP936编码的文件中编码为161,164。

Lua中可在字面量字符串中嵌入显式地指定编码(byte单元),形如”xXX”(十六进制)或”ddd”(十进制)。

则,在utf8编码的文件中,有(“·”==”194183”);在CP936编码的文件中,有(“·”==”161164”)。

类似的php cp936,可在字面量字符串中嵌入显式指定的utf8(二次编码的)编码,形如”u{XXX}”。

参见Lua手册,3.1 –

The UTF-8 of a can be in a

以上嵌入的编码不经过Lua文件字符解析,不受指定的文件编码的影响。

代码页(/CP)一个个具体的码表,各自包含一定范围的字符及其编码。

此一定范围的字符是包含所有字符的的子集。

代码页中的字符是的子集,但其编码不一定与编码相同。

如中文字符集(代码页/CP936),包含中文环境涉及的字符,英文字符、中文字符等,其中英文字符的代码页编码或与编码一致,而中文字符的编码不一致。

各代码页中的字符是的子集(描述的字符范围较小)Lua 编码 CodePage CP936 Unicode UTF8 及 相关库library 整理,进而,存储空间小、编码/解码时间短。

叫做代码页,是因为定义的各代码页是按数字编号的。CP1、CP2、..CP936..、、。

其中CP0为当前设定的系统/环境代码页,为UTF-8(参见如下utf-8)。

/GBK是不同版本的中国标准(国标)码表。

GBK版本更高,兼容。

GBK被采纳收录到CP936。

其他还有更新的(收录于)。

utf-8是压缩/再编码/重编码/二次编码/转换方法。

把固定长度的某编码转换为一个或多个8位二进制单元的变长度编码。

/与utf8的转换是双向等价可逆的。

参考如下不同库( pure lua 库1、库2)中的函数名称:

()、(,index);

.、.;

()、()。

UTF8(仅?)用于。为任意编码(或特指?)

‘·’报错’out of range’?CP936不能转utf8?

相关搜索:

PHP开发中编码问题探讨_迹忆博客(UTF-8被误判为CP936)

php cp936转utf8编码转换乱码问题的解决方案_南通SEO-CSDN博客(作为//再转UTF8)

诡异的 CP936 编码无法转换成 UTF-8 – V2EX(不要看print的结果,看原始HEX)

CP936、UTF8、相互关系

UTF8与可以靠算法相互转换。UTF8可以看作的压缩形式。

CP936与是不同的码表,需要查表转换。

如-CP936描述了CP936编码与编码(及字符名的对应关系)。

不同编码值有各自的特征,可以通过扫描编码值推断出可能的编码方式,但不完全准确。

如(以上提及的第三方库)utf8.(str, )可以验证字符串是否为utf8编码。

Lua中的编码

如:utf8编码下,有(‘·’==’194183’ and ‘·’==’u{b7}’)。

.byte (s

, i

, j

.byte (char,1,#char)可以获得字符char的编码。

参见Lua手册:

the  codes of the  s

, s

i+1

, …, s

其中, codes即字符的编码。

如utf8编码的lua文件中的字符”·”,.byte (‘·’,1,#’·’)得194,183;CP936编码的此字符,得161,164。

.char(byte,..)

为.byte操作的逆操作,将编码解码为字符。

如.char(194,183)所得字符在utf8下为”·”,在其他编码下无意义。

local char='·'
local bytes={string.byte (char,1,#char)}
assert(bytes[1]==194 and bytes[2]==183)--UTF8 194, 183 (0xA1A4)
assert(string.char(table.unpack(bytes))==char)

print(…)

能接受uft8编码或系统代码页(CP936)编码输入,并正确输出字符。

如,print’194183’(utf8)、print’161164’(CP936)均输出”·”。

貌似会自动/隐式地识别处理utf8编码。故,不可用其检查编码问题。

(ZBS)调试中,会按文件编码(此处为utf8)显式字符串。

如,’194183’显示为”·”,’161164’显示为’161164’。

部分Lua原生、第三方库函数不支持utf8编码。

如:io.open、io.popen、lfs.、lfs.dir的输入字符串需为系统活动代码页(CP936),不支持传入/输入utf8编码的中文文件路径;

而,lfs.dir的输出(文件夹中文件、子文件夹的名字字符串)为系统激活代码页(CP936)。

assert(select(2,io.open[[G:PathNotExist]]):find'No such file or directory')
assert(select(2,io.open[[G:中 文.txt]]):find'Invalid argument')
assert(io.open'G:\xD6xD0 xCExC4.txt')--手动硬编码指定 GBK/CP936
assert(select(2,io.open'G:\u{4e2d} u{6587}.txt'):find'Invalid argument')--unicode

区分返回的错误信息’No such file or ‘,’ ‘。

即,io.open函数的输入参数需要CP936编码,不可UTF8、编码。

使用如下的gbk.dll、gutf8库解决。

相关库

/lua-resty- – 码云 – 开源中国

.’·’–u00b7

.’\u00b7′–“·”

utf8.lua · ,扩展lua标准字符串库(正则等),使支持utf8,纯Lua实现。

扩展Lua标准库,使支持utf8编码输入。核心是其中的,可以提取用于扩展lfs。

– GBK for Lua · ,高完成度,(gbk/CP936与UTF8的)编码转换

– GUTF-8 for Lua 5.x · ,高完成度,扩展lua标准字符串库(正则等),加入其他UTF8专用函数

其他未归入正文的参考链接:

utf-8 和 cp936的区别

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » Lua 编码 CodePage CP936 Unicode UTF8 及 相关库library 整理

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们