Linux下Oracle中文数据显示为倒着的问号?(已解决)

Linux下Oracle中文数据显示为倒着的问号
原因为Linux系统环境变量的字符集编码和Oracle的字符集编码不一致。
需要将二者都改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

更改系统环境变量

查看系统的环境变量NLS_LANG。

echo $NLS_LANG

在.bash_profile文件中更改该值。

vim /home/oracle/.bash_profile
#添加该值
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK

保存并退出。
使配置文件生效。

source /home/oracle/.bash_profile

更改Oracle编码

查看oracle字符集编码

select * from v$nls_parameters;

查看NLS_CHARACTERSET的值

或者

select userenv('language') from dual;
-------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

如果不是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,需要更改为该值。

网上说按如下命令直接更改,我尝试后结果报错。

ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';

按照下面步骤则可以成功。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1071333376 bytes
Fixed Size                  1375792 bytes
Variable Size             637534672 bytes
Database Buffers          427819008 bytes
Redo Buffers                4603904 bytes
数据库装载完毕。
SQL> alter system enable restricted session;

系统已更改。

SQL> alter system set JOB_QUEUE_PROCESSES=0;

系统已更改。

SQL> alter system set  AQ_TM_PROCESSES=0;

系统已更改。

SQL> alter database open;

数据库已更改。

SQL> alter database character set  internal_use ZHS16GBK;

数据库已更改。

SQL>  shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 1071333376 bytes
Fixed Size                  1375792 bytes
Variable Size             637534672 bytes
Database Buffers          427819008 bytes
Redo Buffers                4603904 bytes
数据库装载完毕。
数据库已经打开。

SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

修改完成。
这时尝试向Oracle中插入中文数据,在服务器界面仍然显示为小方框,不过在数据库操作工具Navicat上可以看到,中文数据已经显示正常。

参考

Oracle 修改字符集为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux下,当使用PL SQL Developer查询结果中的中文变成了一堆问号,或者SQL语句中的中文被提示为invalid character时,可能是由于字符集设置不正确导致的。你可以尝试以下方法来解决这个问题: 1. 确保数据库字符集设置正确:可以通过以下SQL语句来查看和修改数据库字符集: ```sql -- 查看数据库字符集 SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'; -- 修改数据库字符集(需要先备份数据库) ALTER DATABASE CHARACTER SET <character_set_name>; ``` 其中,`<character_set_name>`是你想要设置的字符集名称,例如AL32UTF8。 2. 确保PL SQL Developer的字符集设置正确:可以在PL SQL Developer的首选项中进行设置。依次点击"Tools" -> "Preferences" -> "Environment" -> "Fonts and Colors",然后选择正确的字符集。 3. 确保操作系统的字符集设置正确:可以通过以下命令来查看和修改操作系统的字符集: ```shell # 查看当前字符集 locale # 修改字符集(需要root权限) sudo dpkg-reconfigure locales ``` 在弹出的界面中选择正确的字符集,然后重启系统使设置生效。 4. 确保数据库和PL SQL Developer使用的字符集一致:可以在PL SQL Developer的连接配置中设置字符集,确保与数据库的字符集一致。 5. 如果以上方法都无效,可以尝试将查询结果导出为文件,然后用其他工具打开查看,看是否能正确显示中文字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值