在我的wibox
任务栏中,我有一个wibox.widget.textbox
,其文字是使用textbox:set_text
方法设置的。
该文本来自bash命令,其输出收到io:popen()
:
local fd = io.popen("sensors | grep -oP 'Physical\\s+id\\s+\\d+:\\s+\\+\\K[0-9.]+'")
local out = fd:read("*all")
fd:close()
temp_widget:set_text(out)
但是,out
包含非ascii符号:度数字符°。
在我的任务栏中,此字符显示为 ,它本身就是一个unicode字符:U+FFFD
。所以我认为awesome支持unicode,那么为什么这个char没有正确显示?
temp_widget:set_text(out .. "foobar")
,则结果与temp_widget:set_text(out)
相同。那么如何追加一个字符串?
答案 0 :(得分:1)
我相信"�"对于任何不在您使用的字体中的字符,不一定是U + FFFD,也是通用替换字符。所以问题可能只是字体支持之一。例如,如果我转到random web page whose title contains a degree sign,则浏览器标题栏包含度数符号。另一种可能性是,由于 Lua strings do not have an explicit encoding ,您可能必须以某种方式告诉窗口小部件它应该为输入采用哪种编码。
对于串联字符串,您确定out
不以换行结束,导致后续字符串被隐藏,因为它超出界限吗? grep
输出始终以换行符结束,即使匹配不是:
$ echo ab | grep -o a | xxd -pu
610a
答案 1 :(得分:0)
我从我的grep
字符串中删除了度数符号,并在lua中再次附加了我的问题。所以字体不是问题,也不是假设编码不是unicode的小部件。
l0b0 关于以新线结束的结果是对的,它解决了我的第二个问题。