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

问题描述 投票:1回答:2

考虑以下两种情况:

local str1 = "abc"

str1:len给出3

local str2 = "£££"

str2:len给出6

有人可以解释一下吗?

LuaJit版本:5.1

string lua luajit
2个回答
4
投票

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

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


0
投票

找到了解决方案。

本地函数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

结束

© www.soinside.com 2019 - 2024. All rights reserved.