Unicode 标识符

lua-users home
wiki

在 Lua 中使用 Unicode 字面量的平台无关方法。

没有此更改的情况

将其添加到本地配置部分(luaconf.h)中。

#ifdef LUA_CORE
// all utf-8 chars are always alphabetic character (everything higher then
// 2^7 is always a valid char), end of stream (-1) is not valid
#define isalpha(zeich) (((0x80&zeich)||isalpha(zeich))&&zeich!=-1)
// all utf-8 chars are always alphabetic character or numbers, end of
// stream (-1) is not valid
#define isalnum(zeich) (((0x80&zeich)||isalnum(zeich))&&zeich!=-1)
// all utf-8 chars are never numbers, end of stream (-1) is not valid
#define isdigit(zeich) ((!(0x80&zeich)&&isdigit(zeich))&&zeich!=-1)
// all utf-8 chars are never whitespace characters, end of stream (-1) is
// not valid
#define isspace(zeich) ((!(0x80&zeich)&&isspace(zeich))&&zeich!=-1)
#endif

请注意,所有 Unicode 字符都将被允许。(这可能是一个问题,因为某些字符看起来类似于 Lua 关键字、运算符和空格。)

然后重新编译 Lua 并尝试这些示例。

local function Gr��e(message)
    print(message)
end

Gr��eAusDeutschland = "Hallo Welt ����"
   -- As you see we are using a global variable with UTF-8 characters
Gr��e(Gr��eAusDeutschland) -- call to local function with UTF-8 characters

-- Please add other Language samples here ;)

-- Just to prove my point some google translate gibberish:

日本からのご挨拶 = "ハローワールド" -- japanese
Gr��e(日本からのご挨拶)

HendrikPolczynski 2009-11-20 - 第一次修订

有关 Unicode 字符串支持和验证,请参见

有关 Lua 中 Unicode 的一般信息,请参见


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2018 年 2 月 22 日凌晨 5:49 GMT (差异)