当前位置 : 主页 > 网络编程 > lua >

Lua是否支持Unicode?

来源:互联网 收集:自由互联 发布时间:2021-06-23
基于以下链接,我对Lua编程语言是否支持Unicode感到困惑。 http://lua-users.org/wiki/LuaUnicode 看来它有但是有限制。我根本不明白,是限制任何大/关键还是不重要的? 你可以在lua中存储unic
基于以下链接,我对Lua编程语言是否支持Unicode感到困惑。

http://lua-users.org/wiki/LuaUnicode

看来它有但是有限制。我根本不明白,是限制任何大/关键还是不重要的?

你可以在lua中存储unicode字符串,如utf8。您可以像任何字符串一样使用这些。

然而,Lua并没有提供对这种字符串的更高层次的“unicode感知”操作的任何默认支持,例如,以字符计数字符串长度,从低到高的大小写等。无论这种缺乏对您来说意义重大吗?你打算用这些字符串来做什么。

可能的方法,具体取决于您的使用:

>如果您只想输入/输出/存储字符串,并且通常将它们用作“整个单位”(用于表索引等),则可能根本不需要任何特殊处理。在这种情况下,您只需将这些字符串视为二进制blob。
>由于utf8的巧妙设计,一些类型的字符串操作可以在包含utf8的字符串上进行,并且会在没有特别小心的情况下产生正确的结果。

例如,您可以附加字符串,在ascii字符之前/之后拆分它们。例如,如果您有一个字符串“开発.txt”,并搜索“。”。在该字符串中使用string.find(string_var,“。”),然后使用正常的string.sub函数将其拆分为“开発”和“.txt”,那些结果字符串将是正确的utf8字符串,即使您不是使用任何一种“unicode-aware”算法。

类似地,您只能在字符串中的ASCII字符(高位为零)中进行大小写转换,并将其余字符串视为二进制,而不用拧紧它们。
>某些utf8感知操作非常简单,只需编写自己的功能即可实现。

例如,要计算字符串的unicode字符的长度,只需计算高位零(ASCII字符)的字符数,以及前两位的字符数11(“ ASCII字符);长度是这两个的总和。
>对于更复杂的操作(例如,非ASCII字符的大小写转换等),您可能必须使用Lua unicode库,例如(前面提到的)Lua-users Unicode page

网友评论