我的中有这个错误/etc/i3blocks.conf
Error: Could not parse JSON (lexical error: invalid bytes in UTF8 string.)
我的代码/etc/i3blocks.conf
看起来像这样。
[rss]
command=rsstail -n1 -1 -N -u https://stackexchange.com/feeds/questions | head -c 50
color=#00FF00
interval=300
[rss]
command=rsstail -n1 -1 -N -u https://unix.stackexchange.com/feeds | head -c 50
color=#00FF00
interval=60
[rss]
command=rsstail -n1 -1 -N -u https://softwarerecs.stackexchange.com/feeds | head -c 50
color=#00FF00
interval=300
[rss]
command=rsstail -n1 -1 -N -u https://news.ycombinator.com/rss | head -c 50
color=#00FF00
interval=300
这是因为 RSS 标题包含不允许的字符。不然我就不会出现这个错误了。我该如何修复或处理我的此错误/etc/i3blocks.conf
?那么,如果一个 RSS 频道不起作用,其他三个频道就会起作用吗?
答案1
这head -c 50
可能会导致问题,因为它可能会在中点切断 utf8 字节序列,从而创建错误的代码点。如果您需要使用它,您可以将多字符输出转换为每个字符仅使用 1 个字节的编码,例如 ascii 或 iso-8859-15。
只需在语言环境中将其设置为rsstail
:
command=LC_ALL=iso-8859-15 rsstail ...
或者,如果确实有来自 rsstail 的错误代码,并且假设 rsstail 的输出可能是 utf8,您可以通过管道传输输出iconv
,要求它用其他内容音译错误代码:
command=rsstail ... | iconv -f UTF-8 -t iso-8859-15//TRANSLIT | head ...