我想了解oracle(通过sql / plus)如何确定用于评估sql脚本的字符集的一些细节.
我的数据库配置如下:
select VALUE from nls_database_parameters where parameter='NLS_CHARACTERSET';
VALUE
------
WE8ISO8859P15
问题是我在这里读到http://www.orafaq.com/wiki/NLS会话参数优先于数据库参数.
这是否意味着数据库编码被执行脚本的用户的NLS_LANG环境变量中定义的数据库编码覆盖?
显然,不可能通过alter session语句修改脚本中的编码.
我问这个问题,因为我已经遇到了由印度的分包商执行的生产脚本损坏的字符问题.我实际上不知道是不是因为他对我的文件做了一些错误(比如在sql gui客户端中复制/粘贴),或者是因为他的环境.
总结一下我的实际问题,如果一切都好
>用户配置了UTF8字符集
>我的sql文件以UTF8编码
>我的数据库在WE8ISO8859P15中
提前感谢你的答案.
最佳答案 是的,你是对的. Oracle客户端始终在数据库字符集和客户端计算机的字符集之间进行转换,该字符集由NLS_LANG环境变量或系统设置确定.
请注意,UTF8仅支持Unicode 3.1及更早版本.请改用AL32UTF8以获得完整的Unicode支持.