マイコンピュータにこのエラーがあります。/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
?もしそうなら、1つのRSSチャンネルが機能しない場合、もう3つのチャンネルは機能しますか?
答え1
これhead -c 50
により、中間点でutf8バイトシーケンスが破棄され、誤ったコードポイントが生成される可能性があるため、問題が発生する可能性があります。これを使用する必要がある場合は、複数文字の出力をasciiやiso-8859-15などの文字ごとに1バイトだけを使用するエンコードに変換できます。
ロケールで次のように設定しますrsstail
。
command=LC_ALL=iso-8859-15 rsstail ...
あるいは、rsstailのエラーコードがあり、rsstailの出力がおそらくutf8であると仮定している場合は、出力をパイプしてiconv
別のものとしてエラーコードを翻訳するように要求できます。
command=rsstail ... | iconv -f UTF-8 -t iso-8859-15//TRANSLIT | head ...