Lua 带有加号/减号字符的GSub

Lua 带有加号/减号字符的GSub,lua,Lua,我正在尝试将文本源转换为HTML可读页面 我尝试过的代码: local newstr=string.gsub(str,"±", "±") local newstr=string.gsub(str,"%±", "±") 但是,字符在输出中显示为 我似乎找不到关于如何处理这个特殊角色的任何其他文档。读入时如何处理此字符,使其正确输出 编辑:尝试建议后,我能够确定: local function sanitizeheader(str) if not

我正在尝试将文本源转换为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,输出中会显示±0。但是,当我试图在读取excel文件时使用str时,它不会提取字符,仍然返回
字符。

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

local str="±®ª"

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

±
®
ª

查看更多信息。

这是一个代码页问题。你的操作系统是什么?源代码的编码是什么?请尝试两种变体:
string.gsub(str,string.char(194177),“±;”
string.gsub(str,string.char(177),“±;”
。要确定Lua源代码的编码,可以将其添加到脚本中并运行:
print(“±”):gsub(“.”,函数(b)return(\\x%02X”):格式(string.byte(b))end))
。它将打印用于编码此字符的字节的表示形式。如果打印两个字节,\xC2\xB1,则Lua脚本采用UTF-8编码;如果是一个字节,\xB1,则编码可能是ISO 8859-1或Windows 1252。但也有其他与Lua兼容的编码包含此字符。源代码是Excel文件(xlsx)的头行。当我运行Cyclamilist提供的脚本时,它显示\xB1。我正在使用SciTE编辑器运行脚本。