社区
基础和管理
帖子详情
字符集转换WE8ISO8859P1 --> AL32UTF8 ????
sywen
2006-09-20 10:43:29
怎样把后台数据库的字符集从WE8ISO8859P1 --> AL32UTF8????
我转换的时候提示 AL32UTF8 不是 WE8ISO8859P1 的超集!那么能否转换呢?
...全文
584
6
打赏
收藏
字符集转换WE8ISO8859P1 --> AL32UTF8 ????
怎样把后台数据库的字符集从WE8ISO8859P1 --> AL32UTF8???? 我转换的时候提示 AL32UTF8 不是 WE8ISO8859P1 的超集!那么能否转换呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sywen
2006-09-20
打赏
举报
回复
首先多谢Eric_1999(╙@^@╜) 的解答,
但是希望不要纸上谈兵,我现在是要真正使用!
请问你有做过吗?这些信息网上都有的!
xiaoxiao1984
2006-09-20
打赏
举报
回复
一般来说字符集转换只能子集转到父集的,不能是父集转成子集
如果父集中的字符在子集中没有对应的编码,那么转换会出现问题的
Eric_1999
2006-09-20
打赏
举报
回复
如果dmp文件很大,用ue无法打开,就需要用程序的方法了。网上有人用java存储过程写了转换的程序(用java存储过程的好处是通用性教好,缺点是比较麻烦)。要求oracle数据库一定要安装JVM选项。
建议楼主别改server的字符集。
sywen
2006-09-20
打赏
举报
回复
第一种方式没用,提示 AL32UTF8 不是 WE8ISO8859P1 的超集
第二种方式,我的dmp文件太大,有3G啊
Eric_1999
2006-09-20
打赏
举报
回复
修改server端字符集(不建议使用)
在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即可。
Eric_1999
2006-09-20
打赏
举报
回复
一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。特别说明,我们最常用的两种字符集ZHS16GBK和ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。
9节课征服「字符编码」
ASCII、GB2312、GBK、GB18030Unicode、UTF-8、UTF-16、UTF-32
oracle 修成
we8
iso
8859p1
,
WE8
ISO
8859P1
字符集
转成
AL32
UTF8
csscan 扫描结果 scan.err[Database Scan Parameters]Parameter Value------------------------------ ------------------------------------------------CSSCAN Version v2.1Inst...
dblink及
字符集
转换
问题。(
UTF8
->
WE8
ISO
8859P1
)
信息描述:1.应用:在database a中:sql>select a.remark from a@db_link_b; db_link_b连到database b中文出现乱码。其中database a的数据...
处理乱码的问题oracle
字符集
WE8
MSWIN1252和
WE8
ISO
8859P1
1.由于这个是全角的引号,本地的数据库的
字符集
是
WE8
MSWIN1252和
WE8
ISO
8859P1
,如果客户端的NLS_LANG和服务器一致的,也是
WE8
MSWIN1252或
WE8
ISO
8859P1
,这两个
字符集
处理这个字符时还是有区别的,先测试
字符集
是
WE8
MSWIN1252的数据库。
WE8
MSWIN1252是
WE8
ISO
8859P1
的超集,一个需求是将带有全角’符号的字符sqlldr到数据库,在过程中遇到一些问题,记录下来。3.客户端的操作系统需要是英文的,如果是中文的操作系统则显示也会是乱码。...
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章