GSub带有加号/减号字符

时间:2018-03-29 05:09:09

标签: lua

我正在尝试将文本源转换为HTML可读页面。

我试过的代码:

local newstr=string.gsub(str,"±", "±")
local newstr=string.gsub(str,"%±", "±")

但是,该字符在输出中显示为Â

我似乎无法找到有关如何处理此特定特殊字符的任何其他文档。如何在读入时处理此字符以便正确输出?

编辑:在尝试建议后,我能够确定:

local function sanitizeheader(str)
    if not(str)then return "" end
    str2 = "Depth ±"
    local newstr=string.gsub(str2, string.char(177), "±")
    return newstr
end

在测试中,如果我使用str2±确实出现在输出中。但是,当我尝试使用str从读取excel文件传入时,它不会拾取该字符并仍然返回Â字符。

1 个答案:

答案 0 :(得分:1)

Lua字符串假定字符串为字节序列。您正在尝试使用utf8多字节字符。您正在尝试的代码应该工作,因为它只是替换一个字节序列。但是,Lua 5.3有utf8库来处理unicode字符

local str="±®ª"

for code in str:gmatch(utf8.charpattern) do
  print("&#" .. utf8.codepoint(code) .. ";")
end

输出:

±
®
ª

查看Lua Reference Manual了解详情。