在lua 5.3参考手册中,我们可以看到:
Lua也是编码不可知的;它没有假设字符串的内容。
我无法理解这句话的内容。
答案 0 :(得分:4)
字符串中的相同字节值可能表示不同的字符,具体取决于用于该字符串的character encoding。例如,相同的值\177
可能代表Code page 437编码中的▒
或Windows 1252编码中的±
。
Lua没有假设给定字符串的编码是什么,并且需要在脚本级别解决歧义;换句话说,您的脚本需要知道是否将字节序列作为Windows 1252
,Code page 437
,UTF-8
或其他编码字符串处理。
答案 1 :(得分:2)
基本上,Lua字符串是一个计算的字节序列。如果对二进制数据使用Lua字符串,则字符编码的概念不相关,并且不会干扰二进制数据。就这样,字符串与编码无关。
标准字符串库中有一些函数将字符串值视为文本 - 一个不计数的字符序列。没有文字而是编码文本。编码将字符集的成员映射到字节序列。字符串将具有零个或多个此类编码字符的字节。要将字符串理解为文本,您必须知道字符集和编码。要使用字符串函数,编码应与os.setlocale()
兼容。