大家知道utf8的每个字符并不是定长,所以在处理中文字符截取是会出现很多麻烦,直接substring的话最后一个字符一般都会是乱码,而且长度也不对,lua没有截取UTF8中文字符的相关函数,我们只能自己写一个:

取前200个中文字符

for uchar in string.gfind(string.sub(data.response.docs[i].content,sp), ‘[%z1-127194-244][128-191]*’) do
     tab[#tab+1] = uchar 
end
for j=1,200,1 do
    if tab[j]~=nil then
        endp=endp..tab[j]
    end
end

通过正则来判断每个UTF8字符的结尾,这个utf8结尾标志就在[%z1-127194-244][128-191]*这个正则里。
另:在处理ngx.location.capture去请求包含proxy_pass的子请求是,需要关闭gzip