我需要编写我的应用程序脚本(不是游戏),我有一个问题,为此选择一个脚本。 Lua看起来很好(实际上,它是我的任务的理想选择),但它有unicode字符串的问题,将被使用。 另外,我考虑过Python,但我不喜欢它的语法,而且它对我来说太大了(大约2.5 Mib)。 Python和其他类似的langs有太多的功能,battaries和模块,我不需要(例如I / O功能) - 脚本只需要实现逻辑,所有其他将执行我的应用程序。 所以,我想知道是否有一个满足这些条件的脚本语言:
重新发明轮子不是一个好主意,所以我不想发展自己的郎。 或者有一种方法可以在Lua的源代码中编写unicode字符串?就像在C ++ L“Unicode string”
中一样答案 0 :(得分:7)
Lua字符串与编码无关。所以,是的,您可以在Lua脚本中编写unicode字符串。如果需要模式匹配,则标准Lua字符串库不支持unicode类。但普通子串搜索有效。
答案 1 :(得分:5)
" unicode string"实际上并不存在这样的事情。字符串是一个可以包含任何内容的字节序列。但是,知道字符串中数据的编码很重要。
我使用Lua和UTF-8 strings,它适用于我关心的所有操作。我不使用任何Unicode字符串库,尽管它们可用于Lua(ICU4Lua,slnunicode等)。
关于在Lua中使用UTF-8字符串的一些注意事项:
以UTF-8计算代码点非常简单,如果效率略低于其他编码。例如在Lua:
function utf8_length(str)
return select(2, string.gsub(str, "[^\128-\193]", ""));
end
如果您需要的不仅仅是这类内容,我提到的unicode库会为您提供所有内容的API,包括编码之间的转换。
就我个人而言,我更喜欢这种简单明了的方法来强制你使用某种类型的unicode(例如Javascript),或者通过在语言中内置多种编码(例如Python)来尝试并聪明。根据我的经验,他们只会导致头痛和性能瓶颈。
在任何情况下,我认为每个开发人员都应该对unicode的工作原理以及不同编码之间的主要区别有一个很好的基本理解,这样他们就可以在应用程序中如何处理unicode做出最佳选择。
例如,如果应用程序中的所有现有字符串都采用宽字符编码,那么使用Lua就不那么方便了,因为您必须为Lua中的每个字符串添加转换。这是完全可能的,但是如果你的应用程序可能受CPU限制(如在游戏中),那么在性能方面它将是负面的。
答案 2 :(得分:1)
看一下JavaScript - V8 engine非常强大,JavaScript没有大stdlib。除此之外,你可以很容易地嵌入它,从我所知道它处理unicode很好。
答案 3 :(得分:0)
看看Io
。
unicode一直向下embeddable。它似乎提供了一些C++ binding library。
答案 4 :(得分:0)
看看Jim Tcl。它体积小,易于嵌入和扩展,支持UTF-8字符串,功能非常强大