oracle 11g linux 导入中文字符乱码问题解决

1. 涉及的字符集

  这个可以分成三块,数据库服务器字符集(server)、实例字符集(instance), 会话字符集(session)

2. 乱码的原因

  session 的字符集和 server 的字符集不相同导致的

3. 字符集来源

 3.1 server

  server 来源应该是 db_install.rsp 文件(不确定,没去查), 具体查看修改的方法如下

-- 查看
select * from nls_database_parameters;
select * from sys.props$;
-- 修改
shutdown immediate;
startup mount;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use al32utf8;
alter session set sql_trace=false;
-- 修改 server 的相关字符级
update sys.props$ set value$='american' where name='nls_language';
update sys.props$ set value$='al16utf16' where name='nls_nchar_characterset';

shutdown immediate;
startup;

1
  

我的修改如下:

-- server --
NLS_LANGUAGE         -> SIMPLIFIED CHINESE => AMERICAN
NLS_CHARACTERSET     -> WE8MSWIN1252     => AL32UTF8
NLS_NCHAR_CHARACTERSET -> UTF8           => AL16UTF16

 3.2 instance 

 这个来源是 dbca.rsp(不确定, 有需要的 可以看 rsp 文件里的注释 )

  3. 3 session

 这个来源是用户当前的环境,如果当前环境没配置,那么就会继承 instance 的相关值,具体修改也比较简单,直接改 oracle 用户的 NLS_LANG 的环境变量值就好了。

#export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'

因为我也不知道用什么值,我是一个一个试的,这里别人说 session 配置的字符集要是 server 是 session 的超集,配置的时候要注意。

ps: 

  session 要注意,不同的 session 会有不同的值。 

   

数据库字符集的

posted @   ashen~  阅读(805)  评论(0编辑  收藏  举报
编辑推荐:
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
阅读排行:
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· 为什么AI教师难以实现
· 如何让低于1B参数的小型语言模型实现 100% 的准确率
· AI Agent爆火后,MCP协议为什么如此重要!
历史上的今天:
2019-04-02 汇编--实验7
点击右上角即可分享
微信分享提示