i3blocks.confエラーのため、JSON語彙エラーを解析できません。

i3blocks.confエラーのため、JSON語彙エラーを解析できません。

マイコンピュータにこのエラーがあります。/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 ...

関連情報