我在 Linux 上使用 SCIM 进行中文和日文输入。不幸的是,当我尝试使用 Perl 的 STDIN 捕获输入时,输入很疯狂。键入罗马字符时,SCIM 会尝试猜测正确的最终字符。
^H(退格)代码用于删除命令行上先前建议的字符。(当您键入时,SCIM 会尝试猜测最终的亚洲字符并显示它们。)但是,这些退格字符按字面意思显示为 ^H 并且没有正确解释。
单行示例:
perl -e 'print "Chinese: "; my $s = <STDIN>; print $s'
当我启用 SCIM 中文或日文输入时,当我键入时,例如 nihao => 你好,结果如下:
你^H你^H你^H你^H你^H你好^H^H你好^H^H你好^H^H你哈^H^H你哈^H^H你哈^H^ H你好^H^H你好^H^H你好^H^H你好
在这个字符串的最后,你可以看到“你好”(nihao/hello)。在正常的 bash 提示符下,如果我输入 nihao(启用中文),结果是完美的。
这与 Perl 的 STDIN 期间对退格字符(或控制字符)的解释有关。在 Bash 中使用命令“读取”时也会发生同样的事情。
见证:read -p 'Chinese: ' s && echo $s