选择脚本语言
我需要为我的应用程序(不是游戏)编写脚本,并遇到了一个问题,就是选择一个适用于此的脚本语言。 Lua看起来还不错(实际上,它非常适合我的任务),但它在使用Unicode字符串时存在问题。 此外,我考虑过Python,但我不喜欢它的语法,而且它的 Dll 对我来说太大了(约为 2.5 Mib)。 Python 和其他类似的语言有太多我不需要的函数、电池和模块(例如 I/O 函数)——脚本只需要实现逻辑,其他所有工作都由我的应用程序完成。 因此,我想知道是否有一种符合以下条件的脚本语言:
- Unicode 字符串
- 我可以导入 C++ 函数,然后从脚本中调用它们
- 能够嵌入应用程序中(无需 DLL),并且没有任何问题
重新发明轮子并不是一个好主意,所以我不想开发自己的语言。 或者,是否有一种方法可以在Lua源代码中编写Unicode字符串?就像在C ++ L"Unicode 字符串"中一样。
原文链接 https://stackoverflow.com/questions/10262114
Lua 字符串与编码无关。因此,是的,您可以在 Lua 脚本中编写 Unicode 字符串。如果您需要模式匹配,则标准 Lua 字符串库不支持 Unicode 类。但是,简单的子字符串搜索可以工作。
其实并不存在所谓的“unicode字符串”。字符串是一个可以包含任何内容的字节序列。然而,知道字符串数据的编码是很重要的。
我使用带有 UTF-8字符串 的Lua,在我关心的所有操作中都非常有效。尽管针对Lua也有Unicode字符串库(例如 ICU4Lua,slnunicode等)。
使用UTF-8字符串时,需要注意以下几点:
- 字符串长度(#操作符)返回的是字节数,而不是字符或码点(非ASCII字符可能是多个字节的序列)。
- 字符串拆分(如string.sub)不能拆分UTF-8序列。
- 字符串匹配(例如string.find,string.match)与ASCII模式相匹配。
- 使用UTF-8作为镜片或真实值时,子串搜索(如“纯文本”模式中的string.find)起作用。
计算UTF-8中码点的数量非常直接,尽管它比其他编码方式略微低效。例如,Lua:
function utf8_length(str)
return select(2, string.gsub(str, "[^\128-\193]", ""));
end
如果需要更多功能,我提到的unicode库将为您提供一切API,包括编码之间的转换。
个人而言,我更喜欢这种直截了当的方法,而不是那些强制使您使用某种Unicode风味(如JavaScript)或者通过在语言中内置多个编码来聪明地处理Unicode(如Python)。在我的经验中,它们只会引起头痛和性能瓶颈。
无论如何,我认为每个开发人员都应该对Unicode的工作原理和不同编码之间的主要区别有一个良好的基础了解,以便能够在应用程序中做出最好的选择。
例如,如果您应用程序中的所有现有字符串都是采用宽字符编码,那么使用Lua会更不方便,因为您需要在Lua中添加每个字符串的转换。虽然这是完全可能的,但如果您的应用程序可能会被CPU绑定(如游戏)则性能会受到负面的影响。
- 如何在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 模式将字符串(嵌套数组)转换为真正的数组?
看看 JavaScript - V8 引擎 相当强大,JavaScript 没有一个大的标准库。除此之外,你可以很容易地嵌入它,据我所知它可以很好地处理 Unicode。