• CentOS7 命令行终端中文显示方块的解决方案fbterm


    原文:

    https://www.javatang.com/archives/2021/11/23/06273441.html

    VMWare Fusion中CentOS命令行中文显示方块

    现象


    在VMWare中安装完CentOS之后,再将环境都设置为中文之后,直接在VMWare中的命令行中文显示为白色的方块,如下:
    file

    但是使用iTerm2或其他SSH客户端远程登录服务器之后,中文显示是正常的,如下:
    file

    根据知乎上jiangtao9999的回答,其原因并非服务器没有设置中文环境,也不是缺少中文的显示驱动,而是Linux内核的显示渲染引擎不支持中文。SSH客户端之所以能够正常显示中文,这是因为显示渲染由SSH客户端实现的。

    检查是否包含完整的中文语言包

    执行下面的命令

    locale -a | grep "zh_CN"

    正常应该显示如下结果:

    zh_CN
    zh_CN.gb18030
    zh_CN.gb2312
    zh_CN.gbk
    zh_CN.utf8

    如果显示不全或者空白的话,需要安装语言包

    yum groupinstall "fonts" -y

    然后通过下面的命令设置当前语言为中文:

    echo 'export LC_ALL="zh_CN.UTF-8"' >> /etc/profile
    source /etc/profile
    echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
    source /etc/locale.conf

    最后一定要重启服务器。

    检查并安装中文字体

    还有一种原因,是系统中缺少中文字体的缘故。

    检查中文字体

    首先需要使用 yum -y install fontconfig 命令安装字体库,然后就可以使用 fc-list :lang=zh 命令检查系统中是否有中文字体,如果列表是空白的说明系统中没有安装中文字体。

    安装中文字体

    创建中文字体文件夹并指定权限:

    mkdir -p /usr/share/fonts/chinese
    chmod -R 755 /usr/share/fonts/chinese

    使用scp将本地的中文字体上传到服务器的上述目录下,Mac的字体在 /System/Library/Fonts 和 /Library/Fonts 两个目录下。
    接下来安装并生成字体索引:

    yum install mkfontscale -y
    cd  /usr/share/fonts/chinese
    mkfontscale 

    最后再执行 fc-list :lang=zh 命令,会发现下面出现了中文字体,如下:

    /usr/share/fonts/chinese/msyh.ttf: Microsoft YaHei:style=Regular,Normal

    使用fbterm

    fbterm (Frame buffer terminal)是一个非常优秀的终端模拟器,可以在CentOS中安装fbterm替换Linux内核终端以解决VMWare中文显示方块的渲染问题。

    编译安装fbterm

    CentOS 6可以直接使用 yum install fbterm -y 命令直接安装,但在CentOS 7中需要通过源码编译安装。

    yum -y install make gcc gcc-c++ fontconfig-devel freetype-devel gpm-devel libX11-devel libXmu-devel
    wget -c https://www.javatang.com/_download/fbterm-1.7.0.tar.gz
    tar xzvf fbterm-1.7.0.tar.gz
    cd fbterm-1.7
    ./configure
    make && make install

    安装完成之后,只要执行 fbterm命令就可以进入模拟终端了,退出可以使用 exit 命令。

    普通用户执行 fbterm 命令之后会出现下面的错误:

    can't open frame buffer device!

    file
    这是因为fbterm命令要使用/dev/fb0设备,而此设备的所属是root:video, 显然,普通用户要想使用它,必须把该普通用户加入到video组中:

    sudo gpasswd -a <username> video

    这样上面的普通用户注销重新登录之后,就可以使用 fbterm 命令了。

    不过这个时候依然无法显示中文,需要设置fbterm的字体。

    设置fbterm中文字体

    上面部分已经安装了中文字体,执行 fc-list :lang=zh 命令查看已经安装的中文字体列表。打开 vim ~/.fbtermrc 文件,font-names 后面增加中文字体,如下所示:

    font-names=mono,Microsoft YaHei

    退出保存之后,fbterm就可以正常显示中文了。
    file

    参考资料:

    VMware Workstation客户端 Centos系统 中文乱码 UTF-8字符无法正常显示
    为什么CentOS控制台下中文会显示方块?
    centos7怎么安装中文环境支持包
    CentOS7安装中文字体
    fbterm

  • 相关阅读:
    Jaxb2 实现JavaBean与xml互转
    标准输入与标准输出
    linux 一行一行的读取文件
    linux $* 和$@ if [ ](字符串比较)
    scala 学习(三)——Array和ArrayBuffer
    Shell编程(六)awk工具
    Shell编程(五)脚本语法
    Shell编程(四)Shell变量
    Shell编程(三)Shell特性
    Shell编程(一)概览
  • 原文地址:https://www.cnblogs.com/itfat/p/16009251.html
Copyright © 2020-2023  润新知