PL/SQL中文乱码问题

最近工作原因开始接触Oracle,对于用习惯MySQL的我还是有些不适应的,首先就是开发工具的改变。在Oracle下,PL/SQL dev可以说是Oracle客户端工具中的绝对霸主,那么要使用Oracle自然少不了使用PL/SQL dev。最近就遇到一个传说中的乱码问题。

经过一翻询问和网上查找资料,终于找到了解决办法,解决的方案也非常简单。

1.查询数据库使用的编码
select userenv('language') from dual

2.配置环境变量,指定客户端要使用的编码。

环境变量的key是:NLS_LANG

环境变量的值是:上面的查询中查出来的Fields的值

3. 重启PL/SQL DEV工具,再次查询,就不会出现乱码问题了。

这里要注意,一定要重启之后才生效。

那么到底为什么会出现中文乱码问题呢?

乱码问题出现的根本原因就是发送和接收两方的编码不同,也就是服务端和客户端所使用的编码不同。何以见得?

select * from V$NLS_PARAMETERS
如果在乱码之前执行这个SQL,会有很多不同的结果,也就是不同的编码。当配置完环境变量之后再来执行,就会发现,就只有一个结果了。


猜你喜欢

转载自blog.csdn.net/king_kgh/article/details/80604196