Linux的locale utf8 BOM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyilong2007101095/article/details/86034469

locale的中文翻译是:本地化

中国人看中文,美国人看英文,中文的时间习惯上是年月日,美国的习惯又是其它,其它国家的又不一样等等不同的需求。

为了让系统对所有国家的人都是友好的,locale来了,就是为了解决这个需求的。

通过echo $LANG可以查看当前的locale

也可以直接使用locale命令,看到locale的各种设置值,有很多分类,比如时间戳,货比,地址数字显示等等

如果想改成中国汉字显示,可以在~/.bashrc里面加一句 export LANG=zh_CN.UTF-8,重启或者source该脚本。

通过输入date命令,可以明显看到前后的区别

需要说明的是在未调整LANG的情况下单独调整某个变量,比如CTYPE,我试过不起作用,也没有太过揪这个点了。

重要的是知道了local只是为了本地化设置。

需要说一点是:就有些有桌面系统的linux,系统的中文应该是由桌面系统来调整的,跟这个local又没有关系了,错误请指正!

在设置的过程中,又看到了:

zh_CN.UTF-8,en_US.UTF-8都是UTF-8,有什么区别呢?

UTF-8是Unicode编码的一种实现,也可以说是一个字符集。zh_CN.utf-8和en_US.UTF-8都是UTF-8,都包含了UTF-8的所有编码,不管使用什么,都可以使用vim打开包含中文的文件,且可以正常显示。两者的区别就在于上面的local,CN默认以中国人习惯的显示方式显示一些内容或者信息。再无其他区别。并不存在网上有些文章说的en_us.utf-8不能编辑中文,我试过的,可以编辑。

在测试utf-8的过程中,又通过了notep看到,无BOM。

BOM就是byte order mark。BOM的本意是显示的告诉应用程序该文件是字节序,unicode有很多编码实现,比如utf-16be,utf-16le,utf-32等,就需要显示的说明字节序了,就类比计算机的大小端一样。BOM对于文本是不可见的,有兴趣的可以在Windows上面用notepad创建一个包含BOM的文本,自己写个很简答的程序,读取前3个字节,就可以看到BOM的编码了。

但是对于utf-8,-8也就说明了是以一个字节为单位来组织的了,那么对于utf-8来说呢,可以不要BOM,也可以要BOM,但是就如上面说的,加了BOM就相当于在文件前面加了三个字节的内容,有可能不兼容,至少shell脚本运行的时候就会有问题,python脚本是兼容的。

猜你喜欢

转载自blog.csdn.net/xiaoyilong2007101095/article/details/86034469