Lua 支持 Unicode 吗?
基于下面的链接,我对 Lua 编程语言是否支持 Unicode 感到困惑。
http://lua-users.org/wiki/LuaUnicode
看起来它确实支持 Unicode,但有限制。我只是不理解,这个限制是否很重要或关键,或者不是什么大问题?
原文链接 https://stackoverflow.com/questions/2497800
如果你想要一个简短的答案,就像链接的网站上所说的那样,答案是“是和否”。
Lua支持Unicode的方式是支持在字符串中指定、存储和查询任意字节值,因此你可以在Lua字符串中存储任何类型的Unicode编码编码的字符串。
不支持的是按Unicode字符迭代,没有标准函数来获取Unicode字符的字符串长度等。因此,像Python中可用的高级Unicode支持(例如长度、小写->大写转换、任意编码的编码等)是不可用的。
Lua 不支持 unicode(除了在字符串中接受任何字节值之外)。然而,slnunicode 库拥有许多 unicode 字符串功能,例如 unicode.utf8.len
。
(注:这个回答完全抄袭了 grom 在另一个问题的评论——我只是认为它值得有自己的答案。)
Lua 不支持 unicode(除了在字符串中接受任何字节值之外)。然而,[slnunicode](http://luaforge.net/projects/sln/) 库拥有许多 unicode 字符串功能,例如 `unicode.utf8.len`。
(注:这个回答完全抄袭了 grom 在另一个问题的评论——我只是认为它值得有自己的答案。)
你可以将 Unicode 字符串以 utf8 的形式存储在 Lua 中,并像任何字符串一样使用它们。
但是,Lua 不提供对此类字符串进行更高级别的“ Unicode 意识”操作的默认支持,例如计算字符数和大小写转换等。这种缺失是否重要取决于你打算如何使用这些字符串。
根据你的使用情况,可能有以下方法:
如果你只想输入/输出/存储字符串,并通常将它们用作“整个单元”(例如用于表索引等),则可能根本不需要任何特殊处理。在这种情况下,你将这些字符串视为二进制 blob。
由于 utf8 的巧妙设计,可以对包含 utf8 的字符串进行某些类型的字符串操作,并且不需要特别注意就能得到正确的结果。
例如,你可以附加字符串,拆分它们以 ASCII 字符为界,等等。例如,如果你有一个字符串
"開発.txt"
,并在其中使用string.find (string_var, ".")
搜索“.”,然后使用普通的string.sub
函数将其拆分为"開発"
和".txt"
,这些结果字符串即使不使用任何“ Unicode 意识”算法也是正确的 utf8 字符串。类似地,你可以仅在字符串中的 ASCII 字符(高位为零的字符)上进行大小写转换,并将其余字符串视为二进制而不会破坏它们。
一些 utf8 意识的操作非常简单,很容易编写自己的函数来执行它们。
例如,要计算字符串中的 Unicode 字符数,请计算高位为零的字符数(ASCII 字符)和前两个位为
11
的字符数(非 ASCII 字符的“ leading bytes”);长度是两者的总和。对于更复杂的操作,例如非 ASCII 字符的大小写转换等,你可能需要使用 Lua Unicode 库,例如位于(前面提到的)Lua-users Unicode 页面 上的库。
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
它支持在 Lua 字符串中使用 Unicode。具体取决于您打算做什么,但大多数限制都可以通过使用自己的函数扩展 Lua 轻松解决。