客户端环境:中文WIN2000,vb 6.0 ,oracle9.2.0.1客户端驱动程序,字符集WE8ISO8859P1
服务器:ORACLE 9.2.0.1 DATA SERVER 字符集WE8ISO8859P1
问题:在代码里用sql提交汉字数据,查询时却是乱码!! 在PL/SQL里面插入数据时不会显示乱码,请各位大哥帮忙解决!
数据库连接对象是RDO,已经不能进行更改了
CurUserNo = GetCommandValue(1)
CurUserName = GetCommandValue(2)
DSN_UID_PWD = GetCommandValue(6) Set SenE = rdoEngine.rdoEnvironments(0)
SenE.CursorDriver = rdUseServer
Set SenC = SenE.OpenConnection("", False, False, DSN_UID_PWD) SenC.QueryTimeout = 180
Where_String = ""
PRINT_WHERE_STRING = ""
SORT_STRING = ""
PRINT_WHERE_STRING = ""
PrintCopies = 1在后面插入的数据,在前台能够正常显示,一旦修改之后就变成乱码了!非常急!!!
服务器:ORACLE 9.2.0.1 DATA SERVER 字符集WE8ISO8859P1
问题:在代码里用sql提交汉字数据,查询时却是乱码!! 在PL/SQL里面插入数据时不会显示乱码,请各位大哥帮忙解决!
数据库连接对象是RDO,已经不能进行更改了
CurUserNo = GetCommandValue(1)
CurUserName = GetCommandValue(2)
DSN_UID_PWD = GetCommandValue(6) Set SenE = rdoEngine.rdoEnvironments(0)
SenE.CursorDriver = rdUseServer
Set SenC = SenE.OpenConnection("", False, False, DSN_UID_PWD) SenC.QueryTimeout = 180
Where_String = ""
PRINT_WHERE_STRING = ""
SORT_STRING = ""
PRINT_WHERE_STRING = ""
PrintCopies = 1在后面插入的数据,在前台能够正常显示,一旦修改之后就变成乱码了!非常急!!!
解决方案 »
- 请教下各位同学,这个2道题目。表我已经建好了。
- Oracle Update语句,为什么不能使用Update ..From语句?
- Oracle 存储过程自动broken的问题
- 关于导出导入问题--求救
- 想做一个从数据库取字段自动生成实体的工具,请问该如何获取数据库的字段的"列明"和"描述信息"啊(内详)
- 送分了```
- 创建表到指定的表空间,提示表空间不存在,问题解决立即给分!!!
- csdn上的高手都到那里去了?(30分)
- 在linux上安装Oracle9i
- 好奇怪的Oracle问题,请大家一起来看看,这是为什么?
- 如何将树型结构的数据存入ORCALE数据库中????????????????
- 请高手们帮看一下这个ORACLE查询语句的写法.
转:
在oracle 8之前,可以用直接修改数据字典表props$来改变数据库的字符集。但oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props$表并不完全,可能引起严重的后果。正确的修改方法如下:
$sqlplus /nolog
SQL>conn / as sysdba;
若此时数据库服务器已启动,则先执行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;
SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP
2、修改dmp文件字符集
上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的第2第3字节的内容就可以‘骗’过oracle的检查。这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些字符集,如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因为改的只是dmp文件,所以影响不大。
具体的修改方法比较多,最简单的就是直接用UltraEdit修改dmp文件的第2和第3个字节。比如想将dmp文件的字符集改为ZHS16GBK,可以用以下SQL查出该种字符集对应的16进制代码:
SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;
0354
然后将dmp文件的2、3字节修改为0354即可。
当然,中文字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK是没有问题的!