CRT连接工具中中文字符显示乱码的解决办法

解决CRT软件中中文显示会乱码的问题

问题背景:有个sql脚本文档(建表和insert语句脚本),我准备使用该脚本在CRT连接工具sql命令行中运行,以在oracle数据库中创造出表和数据,去练习select查询语句。
在我将文件sftp导入到linux系统中的时候,cat文件发现文件中的中文显示是乱码的。在执行该sql脚本的时候也提示错误。应该是字符集编码不同的问题。

首先,去查看数据库中的字符集是否支持中文,如果不支持,是无法存储中文数据的,哪怕在linux中能显示出来,也无法存入到数据库中。

查询数据库中的字符集类型:

SELECT * FROM NLS_DATABASE_PARAMETERS where PARAMETER like '%CHARACTERSET%';

《CRT连接工具中中文字符显示乱码的解决办法》

可以看到,数据库字符集使用的GBK,国家字符集使用的UTF16,均是支持中文的。所以数据库字符集是满足中文存储的要求的。
那么是否是由于linux系统的字符集导致的乱码问题呢。百度如何查看linux系统的字符集之后,去查询。

查看linux系统的字符集:

echo $LANG

《CRT连接工具中中文字符显示乱码的解决办法》

可以看到,linux系统使用的字符集是en_US.UTF-8,这个字符集是美国环境的,在Linux的字符和图形界面下都是无法显示和输入中文的,可以显示中文的系统字符集应该是zh_CN.UTF-8,所以尝试更改系统的字符集设置,具体linux系统的字符集的介绍和设置请参考转载博文:linux字符集的查看和修改

更改linux系统的字符集:

export LANG=zh_CN.UTF-8

《CRT连接工具中中文字符显示乱码的解决办法》

再次cat该sql文件,发现显示还是乱码的。。。
到底是哪里的问题呢,在询问朋友后了解到,虽然更改了linux系统的字符集,但是linux系统本身是不具备显示中文的环境包的,所以还要安装一个中文包。

安装linux系统中文包:(记得挂光盘和mount)

yum groupinstall chinese-support

安装完之后,感觉应该是没有什么问题了,再去查看sql文件。发现还是乱码。。。。
最后,才知道,原来linux系统的字符集虽然改了,但是CRT这个软件的字符编码不是utf8的,所以显示的时候会乱码,故修改CRT软件的环境语言:
《CRT连接工具中中文字符显示乱码的解决办法》

更改完所有之后,去查看sql文件内容,终于好了,漂亮。

总结:

  1. 查看oracle数据库的字符集是否支持中文。不支持中文的话要更改数据库的字符集为支持中文的字符集(如何更改oracle数据库字符集请自行查阅资料)。
SELECT * FROM NLS_DATABASE_PARAMETERS where PARAMETER like '%CHARACTERSET%';
  1. 查看linux系统的字符集是否是中文的环境。如果不是,更改为中文的。前提是要安装了linux系统的中文包。
yum groupinstall chinese-support  --先安装linux系统中文环境包
export LANG=zh_CN.UTF-8  --将linux系统的字符集更改为中文环境
  1. 将CRT软件的字符编码也改为utf8或者其他支持中文的类型。
    原文作者:xiaobai_laobai
    原文地址: https://blog.csdn.net/xiaobai_laobai/article/details/107465870
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞