Ubuntu的中文乱码问题

Ubuntu中文支持,及中文乱码问题

状况:所用的Linux系统不支持中文,遇见中文就zz了。ORZ…

目标:使系统/服务器支持中文,能够正常显示。

首先,安装中文支持包language-pack-zh-hans:

sudo apt-get install language-pack-zh-hans

然后,修改/etc/environment(在文件的末尾追加),可用命令 vi /etc/environment

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

再修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加),可用命令 vi /var/lib/locales/supported.d/local

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN GB2312

最后,执行命令:

sudo locale-gen

对于中文乱码是空格的情况,安装中文字体解决。

sudo apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming

以上,问题解决,中文显示正常。:)

如何设置或更改时区在Ubuntu 20.04

timedatectl是一个命令行程序,可让您查看和更改系统的时间和日期。它在所有基于现代systemd的Linux系统上都可用,包括Ubuntu 20.04。

在调用timedatectl命令不使用任何参数时,timedatectl将打印系统的时区。如果安装系统时没有设置时区。系统将使用默认UTC时区。

以下timedatectl命令将会打印系统的时区和所在时区的当前时间。并显示系统时钟服务同步以及NTP服务的状态:

timedatectl

上面的timedatectl命令输出,可以注意到系统使用的UTC时区。如果这与你所在的时区不一致。可以继续使用timedatectl修改系统时区。

更改时区

更改时区之前,您需要找出与你当前时区匹配的时区的长名称。长时区的名称使用地区/城市格式作为命名。

如你不知道你所处位置的时区长名称,可以通过使用timedatectl命令的list-timezones选项列出全世界所有可用的时区。

通常timedatectl命令会打印所有时区。我们将timedatectl列出的时区名称通过管道传递给grep命令过滤时区名称。

在本教程中,我们将使用亚洲/上海的时区作为系统的时区。我将大概知道长时区的名称中将包含shanghai的字符。此时我么使用shanghai作为grep的关键词过滤即可找到上海的时区。

以下timedatectl命令打印所有时区,然后通过管道传递grep命令不区分大小写搜索包含括shang关键词的时区:

timedatectl list-timezones | grep -i shang

该命令将打印以下输出:

Asia/Shanghai

现在,已经找到所在位置的时区长名称。

我们就可以使用timedatectlset-timezone选项设置系统的时区,并在set-timezone选项之后传递长时区名称。

请以root或具有sudo权限的用户运行以下timedatectl命令设置系统的时区为Asia/Shanghai

sudo timedatectl set-timezone Asia/Shanghai

上面的timedatectl命令将不会产生任何输出。至此,我们已将系统时区设置为Asia/Shanghai。如你需要验证系统时区是否设置成功。

再次不带任何选项参数调用timedatectl命令,打印系统当前设置的时区即可:

timedatectl

软链接修改系统时区

Linux系统使用/etc/localtime文件存储着系统的时区,它是一个软链接/符号链接文件。它指向/usr/share/zoneinfo/目录以及子目录下的时区文件。

这些时区文件以二进制的存储着时区的信息。当应用程序需要用户展示时区时。应用程序将读取/etc/localtime最终指向的二进制时区文件。

因此,我们还可以通过修改/etc/localtime符号链接最终指向的二进制时区文件来配置系统的时区。也可以使用ls命令查看当前时区。

以ls命令将打印/etc/localtime所有信息,你会看到/etc/localtime文件的类型是符号链接,并指向/usr/share/zoneinfo/Hongkong

ls -al /etc/localtime
lrwxrwxrwx 1 root root 33 Feb 22 11:26 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai

现在已经确定了系统所有使用的时区。假如我们将时区更改为上海。可使用ln命令直接改变/etc/localtime指向的二进制时区文件修改系统时区。

如你不确定所在位置的时区名称,可使用find . -iname "你时区关键字*"命令搜索时区名称的关键字,i表示不区分大小写。

find命令将列出所有可能包含时区名称的关键字的二进制时区。这些文件都可用于使用ln命令设置系统的时区。

以下ln命令修改/创建文件/usr/share/zoneinfo/Asia/Shanghai/etc/localtime的软链接:

sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

如果如果你需要验证系统时区是否成功修改或者设置。可使用date命令打印当前系统的时间。当时区发生变化,date命令时间也将会更改。

以下date命令将会打印系统的当前时间:

date

发表评论