如果我需要具有以下python值,则unicode char'0':
>>> unichr(0)
u'\x00'
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Lua中定义它?
Nic*_*las 10
没有一个.
Lua没有Unicode值的概念.lua没有统一的概念可言.所有Lua字符串都是8位"字符"序列,所有Lua字符串函数都将这样处理.Lua不会将字符串视为具有任何Unicode编码; 它们只是一个字节序列.
您可以在字符串中插入任意数字.例如:
"\065\066"
Run Code Online (Sandbox Code Playgroud)
相当于:
"AB"
Run Code Online (Sandbox Code Playgroud)
该\
符号后面是3位数字(或转义字符中的一个),其必须小于或等于255的Lua是完全能够处理字符串与嵌入\000
的字符.
但是你不能直接将Unicode代码点插入Lua字符串.您可以将代码点分解为UTF-8并使用上述机制将代码点插入到字符串中.例如:
"x\226\131\151"
Run Code Online (Sandbox Code Playgroud)
这是Unicode组合上箭头字符x
后跟随的字符.
但由于没有Lua函数实际上理解UTF-8,因此您必须公开一些需要UTF-8字符串的函数,以便它以任何方式有用.
怎么样
function unichr(ord)
if ord == nil then return nil end
if ord < 32 then return string.format('\\x%02x', ord) end
if ord < 126 then return string.char(ord) end
if ord < 65539 then return string.format("\\u%04x", ord) end
if ord < 1114111 then return string.format("\\u%08x", ord) end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5775 次 |
最近记录: |