目前的项目是用oracle+java开发的,java的编码方式是UTF8,而数据库里面的字符集是ZHS16GBK,
java提交数据库后显示为乱码,现在需要将数据库里面的字符集转换为AL32UTF8.请问下怎么转换?谢谢!
java提交数据库后显示为乱码,现在需要将数据库里面的字符集转换为AL32UTF8.请问下怎么转换?谢谢!
解决方案 »
- 问题:数据库连接失败: ORA-12170: TNS:Connect timeout occurred ?
- 求助双机热备安装文档
- 为什么我把数据库从一个机器导到另一个机器的时候,会有有的表的记录不能完全插入,有的外键也丢失了,请大家指点一下
- 菜鸟问题(有关删除表内记录的问题...........高手进........)
- 存储过程的错误
- 在linux9下面装oracle8.1.5怎么老是不成功
- 首选身份
- orale中调用函数concat的问题(请教解决方法)
- 主键ID自增但是要和系统日期组合插入值,求解!!??
- 刚装上的oracle,系统是否会生成一登陆号和密码,不小心没记下就确定了,sql plus进不进去怎办
- 使用sql loder 将txt 导入到oracle 数据库如何去掉整张表每个列的空格?
- 如何设置用户的操作权限,总提示权限不够?WIN系统
AMERICAN_AMERICA.US7ASCII中前面AMERICAN_AMERICA决定了Oracle返回信息的语言类别,如ORA-XXXXX的出错信息为英语显示,你用SIMPLIFIED CHINESE.US7ASCII,则显示为中文信息,当然,前提是你安装了相应语言的MSG文件,另还决定了日期、货币等缺省显示格式;AMERICAN_AMERICA.US7ASCII中后面的US7ASCII决定该机上执行的Oracle应用程序或管理工具对数据库中字符型数据字符集的翻译理解。
根据你的叙述,基本可断定A机数据库字符集为US7ASCII(注意:不是指A机上的环境或注册表设置,一般,字符集在创建库时已确定,实际运行的系统不可能对数据库字符集进行更改,因为可能破坏数据),而B机的数据库字符集不是US7ASCII,最简单的方法,你应删除B机上的实例后重建,重建时注意选择正确的字符集,为保证兼容性,至于客户机的环境或注册表设置必须为XXX.US7ASCII,XXX不作特别要求.如不允许重建B机数据库,则只能修改,8i下运行svrmgrl,一般如下:
SVRMGR>connect internal;
SVRMGR>Shutdown immediate;
SVRMGR>startup mount;
//断开网线,并无其他程序访问数据库,则下三句可以不要
SVRMGR>alter system enable restricted session;
SVRMGR>alter system set job_queue_processes=0;
SVRMGR>alter system set aq_tm_processes=0;
SVRMGR>alter database open;
SVRMGR>alter database character set US7ASCII; //影响char, varchar2, CLOB等
SVRMGR>alter database national character set US7ASCII;//影响nchar, nvarchar2, NCLOB等
SVRMGR>Shutdown immediate;
SVRMGR>startup;
Oracle中的语言及字符集含义非常复杂,某些字符集有一定的兼容性,可能字符集X是字符集Y的子集,或正巧你数据库中已存在地数据对于X、Y正好相同,则通过alter database改变现有数据库不会破坏数据,否则...最好多看帮助。
US7ASCII字符集是ZHS16GBK字符集的子集,不能被修改,谢谢楼上!