bash shell终端中文显示
发布网友
发布时间:2022-04-24 08:16
我来回答
共2个回答
热心网友
时间:2022-06-17 22:54
首先纠正你的一个错误, bash shell并不是终端。
终端的概念是一个应用程序, 负责解释对端传来的数据显示给用户看,同时接受用户的输入传输给对端。
如果你用的是gnome, 这个终端一般就是gnome-terminal, 终端有很多, 比如xterm, cxterm, 等等, 还有在windows下的netterm teraterm , securetty, putty等,都是终端。甚至windows的dos窗口也是终端的一种。更广义的, windows的远程桌面,也是终端,“图形终端”
ok,接下去解释你的问题, 终端最重要功能之一是显示对端传输过来的内容给用户。 对于字符终端,那么就是把字符内码变成具体字体文件中的某一个字体显示给用户看。 你执行了 LANG=UTF-8,那么大部分linux软件输出的信息就是用UTF-8编码的文字, 如果你的终端可以正确显示这些文字,说明你的终端中默认编码为UTF-8.
然后你挂载了windows分区, 比如用ls命令列目录, 刚才说到LANG=UTF-8会影响linux命令的输出信息为UTF
-8编码,但是大部分命令来说,仅仅影响该命令自身输出的信息,比如 问一个一个问题,告诉你一个信息。 而对于ls来说,它的作用是把实际存在的文件名字告诉你, 这个文件名字的编码是什么,ls不关心,所以 你的mount命令,对于linux的文件系统来说, 是把储存在vfat文件系统上的文件名用 cp936的代码页编码提供给linux, 所以ls命令读到的也是cp936代码页的编码,实际上也就是我们平时说的GB编码, ls命令就把这些文件名输出给终端, 终端只认识utf-8编码, gb编码的不认识,就变成了"?"。
试试 iocharset=utf-8看看有没有用。 手上没有测试环境,不过最重要的是你要理解这种情况发生的原因。
热心网友
时间:2022-06-17 22:54
没办法现在都这样
我的ubuntu显示的也是?