i3blocks电池脚本,使用字体awesome不能用于某些unicodes

时间:2015-08-24 11:54:22

标签: perl unicode icons font-awesome

我使用font-awesome 4.4.0并使用新的电池图标扩展了默认的i3blocks电池脚本。 所有似乎都正常工作,但fa-battery-half Unicode: f242,使脚本无用。 unicode似乎也引用了字符

在终端中,它崩溃了:

$ perl /usr/share/i3blocks/battery
Wide character in print at /usr/share/i3blocks/battery line 65.
28%  (01:02)
Wide character in print at /usr/share/i3blocks/battery line 66.
28%  
#000000

该脚本是默认的,除了以下几行:

if ($status eq 'Discharging') {

if ($percent < 10) {
    $full_text .= '  ';
} elsif ($percent < 25) {
    $full_text .= '  ';
} elsif ($percent < 50) {
    $full_text .= '  ';
} elsif ($percent < 75) {
    $full_text .= '  ';
} elsif ($percent < 100) {
    $full_text .= '  ';
}

} elsif ($status eq 'Charging') {
    $full_text .= '  ';
}

if ($status eq 'Discharging') {

if ($percent < 25) {
    print "#FF003C\n";
} else {
    print "#000000\n";
}

if ($percent < 5) {
    exit(33);
}
}

在编辑器中,脚本如下所示:

enter image description here

如何使用fa-battery-half Unicode: f242图标让脚本生效。

1 个答案:

答案 0 :(得分:5)

你有两个问题。

你的第一个问题是一个导致&#34;宽字符的错误&#34;警告和可能的其他问题。要解决该错误,请对输出进行正确编码。具体来说,将以下内容添加到脚本中:

use open ':std', ':encoding(UTF-8)';

这告诉Perl

  • 使用UTF-8编码发送到STDOUT的文本。
  • 使用UTF-8编码发送到STDERR的文本。
  • 使用UTF-8解码从STDIN读取的文本。
  • 使用UTF-8作为文件的默认编码。

警告表明Perl能够注意到您的错误,并尝试通过使用UTF-8对输出进行编码来修复它。这是正确的解决方案,因此您的计划输出不会发生变化,这会带来第二个问题。

您的第二个问题是您的终端字体没有U + F242的字形。如果您希望显示该字符,则需要使用其他字体。