我需要获取文本变量的第一个字符。我通过以下简单方法之一实现了这一点:
string.sub(someText,1,1)
或者
someText:sub(1,1)
如果我执行以下操作,我希望得到'ñ'
第一个字母。但是,这两种sub
方法的结果都是'Ã'
local someText = 'ñññññññ'
print('Test whole: '..someText)
print('first char: '..someText:sub(1,1))
print('first char with .sub: '..string.sub(someText,1,1))
以下是控制台的结果:
2014-03-02 09:08:47.959 Corona Simulator[1701:507] Test whole: ñññññññ
2014-03-02 09:08:47.960 Corona Simulator[1701:507] first char: Ã
2014-03-02 09:08:47.960 Corona Simulator[1701:507] first char with .sub: Ã
似乎该string.sub()
函数正在以 UTF-8 编码返回的值。只是为了好玩,我尝试使用utf8_decode()
Corona SDK 提供的功能。它没有成功。模拟器表明该函数需要一个数字,但却得到了nil
。
我还搜索了网络,看看是否有其他人遇到过这个问题。我发现有很多关于 Lua、Corona、Unicode 和 UTF-8 的讨论,但我没有遇到任何可以解决这个特定问题的东西。