什么是“编码不可知”的定义?

时间:2015-05-16 14:51:38

标签: encoding lua

在lua 5.3参考手册中,我们可以看到:

  

Lua也是编码不可知的;它没有假设字符串的内容。

我无法理解这句话的内容。

2 个答案:

答案 0 :(得分:4)

字符串中的相同字节值可能表示不同的字符,具体取决于用于该字符串的character encoding。例如,相同的值\177可能代表Code page 437编码中的Windows 1252编码中的±

Lua没有假设给定字符串的编码是什么,并且需要在脚本级别解决歧义;换句话说,您的脚本需要知道是否将字节序列作为Windows 1252Code page 437UTF-8或其他编码字符串处理。

答案 1 :(得分:2)

基本上,Lua字符串是一个计算的字节序列。如果对二进制数据使用Lua字符串,则字符编码的概念不相关,并且不会干扰二进制数据。就这样,字符串与编码无关。

标准字符串库中有一些函数将字符串值视为文本 - 一个不计数的字符序列。没有文字而是编码文本。编码将字符集的成员映射到字节序列。字符串将具有零个或多个此类编码字符的字节。要将字符串理解为文本,您必须知道字符集和编码。要使用字符串函数,编码应与os.setlocale()兼容。