Lua : 含有特殊字符的字符串的长度错误

考虑下面两种情况:

local str1 = "abc"

str1:len 获得的是 3

local str2 = "£££"

str2:len 获得的是 6

有人能解释一下吗?

LuaJit 版本: 5.1

点赞
用户107090
用户107090

Lua中字符串的长度是它的字节数,而不是字符数。

要处理多字节字符集,您需要使用类似于utf8这样的库,该库在Lua 5.3中可用。

2017-12-21 12:40:15
用户1691485
用户1691485

找到一个解决方案。

local function parse_string(str)

    local ret = ""

    local flag = true

    for i = 1, #str do

        local c = str:sub(i,i)
        local char = string.char(b2i.toint(c, "big", false, 1))

        if char > "\127" then
            flag = not flag
            if(flag) then
                ret = ret .. char
            end
        else
            ret = ret .. char
        end

    end

    return ret

end
2017-12-22 07:26:10