Lua:具有特殊字符的String的字符串长度不正确

时间:2017-12-21 12:22:15

标签: string lua luajit

考虑以下两种情况:

public function scopeSearch($query , $keyword)
    {
        $query->where('title', 'LIKE', "%".$keyword."%");
        return $keyword;
    }

local str1 = "abc" 提供 3

str1:len

local str2 = "£££" 提供 6

有人可以解释一下吗?

LuaJit版本:5.1

2 个答案:

答案 0 :(得分:4)

Lua中的字符串长度是 bytes 的数量,而不是 chars 的数量。

要处理多字节字符集,您需要一个像utf8这样的库,它可以在Lua 5.3中使用。

答案 1 :(得分:0)

找到解决方案。

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

  return ret