【问题标题】:AwesomeWM non-ascii character doesn't displayAwesomeWM 非 ASCII 字符不显示
【发布时间】:2017-07-15 03:13:09
【问题描述】:

在我的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 不能正确显示呢?

编辑:另外,作为一个附带问题,我不能将字符串附加到我的输出中。 IE,如果我做temp_widget:set_text(out .. "foobar"),结果和temp_widget:set_text(out)一样。那么如何追加字符串呢?

【问题讨论】:

    标签: bash unicode lua awesome-wm


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      我解决了我的问题,从我的grep 字符串中删除了度数符号,并将其再次附加到 lua 中。所以字体不是问题,假设编码不是 unicode 的小部件也不是问题。

      l0b0 关于 out 以新行结尾的说法是正确的,但它解决了我的第二个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 2012-10-26
        • 2013-08-19
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多