字符集US7ASCII转AL32UTF8

linktoyl 2014-09-11 02:42:48
客户端的字符集为AMERICAN_AMERICA.AL32UTF8,现将老的US7ASCII数据库,转换成AL32UTF8,中文出现乱码。
我采用的方法是,在US7ASCII服务器端(字符集为AMERICAN_AMERICA.US7ASCII),创建视图
create or replace view table_VIEW as
select
utl_raw.cast_to_raw(T.中文字段名) 中文字段名
from tableT

在AL32UTF8客户端
Insert into table select
utl_raw.cast_to_varchar2(中文字段名) 中文字段名
from table_VIEW@alt8;

其中@alt8为数据源。
问题描述,在AL32UTF8客户端服务器上,用PLSQL,中文正常,但是用oracle客户端打开中文是乱码,且java程序中文也是乱码。
...全文
1459 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkzhong 2016-03-10
  • 打赏
  • 举报
回复
我吧之前遇到这个问题解决的方法给你: 启动PL/SQL Developer 报字符编码不一致错误 Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different. Character set conversion may cause unexpected results. Note: you can set the client character set through the NLS_LANG environment variable or the NLS_LANG registry key in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_Oracle_10g. 打开注册表,通过命令regedit。找到到文中提示的路径,发现NLS_LANG键的值为: SIMPLIFIED CHINESE_CHINA.ZHS16GBK 修改为:SIMPLIFIED CHINESE_CHINA.AL32UTF8即可 还有一种可能是由于安装11g的时候没选择自定义安装造成的 Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different. Character set conversion may cause unexpected results. Note: you can set the client character set through the NLS_LANG environment variable or the NLS_LANG registry key in HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb11g_home SIMPLIFIED CHINESE_CHINA.ZHS16GBK 包含 AMERICAN_AMERICA.AL32UTF8. 这可是个麻烦事,不是改客户端字符集的问题。要改数据库的字符集: SQL> conn /as sysdba SQL> shutdown immediate; SQL> startup mount 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 ZHS16GBK; ORA-12712: new character set must be a superset of old character set 提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; --我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. SQL> select * from v$nls_parameters; SQL> shutdown immediate; SQL> startup SQL> select * from v$nls_parameters; 以后安装oracle11g的时候记得选择自定义安装,把这个字符集的事情事先弄好
gavinhuanghsc 2016-01-28
  • 打赏
  • 举报
回复
这个应该修改客户端的字符集吧
shangxl800 2016-01-20
  • 打赏
  • 举报
回复
客户端设置字符集为zhs16gbk就可以了
Tiger_Zhao 2014-09-11
  • 打赏
  • 举报
回复
要用 Convert 做个转换,参考 从utf8转到US7ASCII
linktoyl 2014-09-11
  • 打赏
  • 举报
回复
引用 2 楼 hyee 的回复:
你的Oracle客户端是什么名字?Jdbc thin client不继承客户端的NLS_LANG,需要自行转换
可是现在sqlplus 连上去也是乱码啊
hyee 2014-09-11
  • 打赏
  • 举报
回复
你的Oracle客户端是什么名字?Jdbc thin client不继承客户端的NLS_LANG,需要自行转换
linktoyl 2014-09-11
  • 打赏
  • 举报
回复
难道就没一个人能解决这个问题吗

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧