![为什么国家(波兰)字符不会通过串行 tty 在屏幕上的 bash 中显示?](https://linux22.com/image/114446/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9B%BD%E5%AE%B6%EF%BC%88%E6%B3%A2%E5%85%B0%EF%BC%89%E5%AD%97%E7%AC%A6%E4%B8%8D%E4%BC%9A%E9%80%9A%E8%BF%87%E4%B8%B2%E8%A1%8C%20tty%20%E5%9C%A8%E5%B1%8F%E5%B9%95%E4%B8%8A%E7%9A%84%20bash%20%E4%B8%AD%E6%98%BE%E7%A4%BA%EF%BC%9F.png)
我们使用 screen 应用程序通过 tty 远程登录设备。当我按下国家组合键时,我只看到屏幕闪烁,没有输出。但是当我在同一个 bash 控制台中启动自己编写的简单应用程序时,我得到:
root#0000:~# ./charcode
ł
Got char c: C5
Got char c: 82
Got char c: 0A
^C
root#0000:~#
之后当我这样做时:
root#0000:~# echo -e '\xC5\x82'
ł
root#0000:~#
简单应用程序的源代码是:
#include <stdio.h>
int main()
{
int c;
while((c=getchar())!=EOF) {
printf("Got char c: %02X\n", (unsigned char)c);
}
return 0;
}
为什么 bash 中不显示国家(波兰)字符?
答案1
Debian 及其所有衍生产品(例如 ubuntu 等)中存在一个错误 看看这里。
要修复此错误:
rm /etc/console-setup/*.gz && setupcon --save-only
这将改变下面的越野车行
/etc/console-setup/cached_setup_keyboard.sh
-loadkeys '/tmp/tmpkbd.iDWdSi' > '/dev/null'
+loadkeys '/etc/console-setup/cached_UTF-8_del.kmap.gz' > '/dev/null'