Hi, 春哥
最近用LuaXML做了个项目,也看了论坛上所有关于LuaXML的帖子,但是我还是遇到了下面的问题:
使用方法:
xml = require("xml")
ngx.print(xml.str(xml.eval([[<?xml version="1.0" encoding="utf-8"?><INFO name="你好,春哥"/>]])))
输出:
<INFO name="你好,春哥" />
如果采用如下方法得到:
utf = require("utf8")
xml = require("xml")
ngx.print(string.gsub(xml.str(xml.eval([[<?xml version="1.0" encoding="utf-8"?><INFO name="你好,春哥"/>]])), '&#(%d+);', utf.to_utf8))
<INFO name="ä½ å¥½ï¼æ¥å¥" />
utf8.lua:
function tail(n, k)
local u, r=''
for i=1,k do
n,r = math.floor(n/0x40), n%0x40
u = char(r+0x80) .. u
end
return u, n
end
function to_utf8(a)
local n, r, u = tonumber(a)
if n<0x80 then -- 1 byte
return char(n)
elseif n<0x800 then -- 2 byte
u, n = tail(n, 1)
return char(n+0xc0) .. u
elseif n<0x10000 then -- 3 byte
u, n = tail(n, 2)
return char(n+0xe0) .. u
elseif n<0x200000 then -- 4 byte
u, n = tail(n, 3)
return char(n+0xf0) .. u
elseif n<0x4000000 then -- 5 byte
u, n = tail(n, 4)
return char(n+0xf8) .. u
else -- 6 byte
u, n = tail(n, 5)
return char(n+0xfc) .. u
end
end
项目都做完了,全是XML文件格式进行数据交换的,可今天突然测试中文字符串的时候遇到这个总是,春哥帮帮忙啊!!!