PLSQL Developer 中文乱码踩坑记

环境

操作系统版本: Windows 7
PL/SQL 版本: 12.0.1.1814

原因

由于 Oracle 服务器端和客户端字符集编码不一致引起的。

注意点

写在最前面,减少踩坑!!!

网上教程大多未强调这些注意点,像我这样的 Oracle 小白就完美踩坑而过。

  • 设置完环境变量NLS_LANG后,我个人重启 PL/SQl多次不生效,重启操作系统才生效。
  • 设置客户端和服务器端的字符集后,需要再次UPDATE后,此时SELECT才不是乱码。
  • 执行完 SQL语句,记得 commit,否则其他会话无法获取最新数据。

解决方法

服务端

检查 Oracle 服务器端字符编码是否一致。

-- 检查字符集是否一致 
select userenv('language') from dual;
-- AMERICAN_AMERICA.AL32UTF8

select * from v$nls_parameters a where a.PARAMETER = 'NLS_CHARACTERSET'; 
-- AL32UTF8

客户端

设置客户端字符集

在系统环境变量中,新增变量 NLS_LANG,设置字符集为:AMERICAN_AMERICA.AL32UTF8(服务器端的字符集)。

我个人重启 PL/SQL 不生效,重启系统才生效。

验证是否生效

打开 PL/SQL工具的:帮助–支持信息–信息 选项卡里进行检查,在“Character Sets”下面,有一项是:“NLS_LANG”, 检查是否与环境变量设置的NLS_LANG一致,一致即生效。

设置字体字符集

打开 PL/SQL工具的:配置–首选项–用户界面–字体–主字体,设置字体字符集为“西欧语言”,默认为“中文 GB2312”。

微信公众号:daodaotest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叨叨软件测试

不敢奢望赞赏,只求点赞关注~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值