`

【字符集】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题

阅读更多

在数据库服务器字符集为AL32UTF8,我们来思考并处理一下Windows XP环境下的Toad工具显示字符为乱码的问题。

1.鉴于《【字符集】“客户终端字符集”、“NLS_LANG”环境变量以及“数据库字符集”》http://space.itpub.net/519536/viewspace-615345提到的“Toad同学”显示不稳定的现象,这里给出一个处理方法。

2.先列一下上面文章中得到的几个结论:
1)如果有可能,尽量保证客户端编码(Windows XP的cmd工具可以使用chcp命令来确认)、NLS_LANG参数和数据库字符集这三个内容一致,这样设置,无论是从性能上,还是从防止编码转换上都是最佳的;
2)如果目的是支持中文,数据库Server端的字符集应该尽量选择ZHS16GBK或AL32UTF8字符集,这样可以减少因不当的“转码”导致的字符乱码故障;
3)(推荐)可已将NLS_LANG参数与操作终端字符编码一致,这样可以保证数据库能正确获得应用终端使用的编码,这时会发生“编码转换”,但是,这样就可以保证正确转码,可以防止错误的编码存入数据库;
4)(不推荐)也可以将NLS_LANG参数与数据库服务器端的编码一致,这样,客户端无论是发送到服务器端还是从服务器接收数据都不会“转码”,这样能保证客户端对字符的显示效果,但是,一定要小心,这时数据库服务器上存放的字符编码很可能是错误的。
5)PL/SQL Developer工具在AL32UTF8字符集下貌似可以保证数据效果,但是“Toad同学”貌似不太“稳定”。

3.如果您仔细探究一下,乱码的成因很单纯:“乱码”来自于“转码”!

4.因为Windows XP系统的字符集是936,也就是中文字符集GBK,这个字符集在Oracle中对应的就是ZHS16GBK,鉴于上面提到的结论“2)”和结论“3)”,所以就有了这个所谓的“折中式”处理方法:将Windows XP注册表中的NLS_LANG参数修改为AMERICAN_AMERICA.ZHS16GBK,以便保证与Windows XP这个操作终端的字符集一致。这样,在每次存取数据的时候都会发生转码,目的是在数据库Server端不会存入错误的编码。请参考下面的确认和修改方法。
1)Windows XP字符集确认方法:
C:\>chcp
Active code page: 936
代码页936就是中文字符集GBK,可以参考msdn的资料《Windows Codepage 936》
http://www.microsoft.com/globaldev/reference/dbcs/936.htm

2)Windows XP环境Oracle的NLS_LANG参数修改流程:
Windows键+R进入到Run对话框,输入“regedit”进入到注册表
导航:HKEY_LOCAL_MACHINE --> SOFTWARE --> ORACLE --> KEY_OraDb_home1
右侧找到NLS_LANG参数,修改为AMERICAN_AMERICA.ZHS16GBK。如果没有这个参数,请自行创建。

5.这样修改后,还带了了一个副作用(是“副作用”,不是“负作用”,意为另外一个好的结果):
在修改NLS_LANG为AMERICAN_AMERICA.ZHS16GBK之前,该参数为AMERICAN_AMERICA.AL32UTF8,是与数据库Server端保持一致的,虽然这样设置不会发生转码的现象,但是在Windows的cmd环境下会出现“一些汉字”(大部分可以)汉字无法录入的问题,现象如下:
C:\>sqlplus sec/sec@DB_AL32UTF8

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 23 10:57:21 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

sec@ora10g> drop table t purge;

Table dropped.

sec@ora10g> create table t (x varchar2(10 char));

Table created.

sec@ora10g> insert into t values ('侯');
ERROR:
ORA-01756: quoted string not properly terminated

这只是一个影响,另外一个著名的影响就是加中文comments的时候也报这样的错误
sec@ora10g> comment on table t is '侯';
ERROR:
ORA-01756: quoted string not properly terminated

OK,问题现象描述清楚了,下面我们修改NLS_LANG参数为AMERICAN_AMERICA.ZHS16GBK,也就是保持和XP系统的字符集一致。
注意:需要重新进入以下SQLPLUS环境
C:\>sqlplus sec/sec@DB_AL32UTF8

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 23 11:05:07 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

sec@ora10g> insert into t values ('侯');

1 row created.

sec@ora10g> comment on table t is '侯';

Comment created.

sec@ora10g> col DUMP(X) for a30
sec@ora10g> select x,dump(x) from t;

X                    DUMP(X)
-------------------- ------------------------------
侯                   Typ=1 Len=3: 228,190,175

效果非常的明显吧,dump后的结果也很清楚的表名,“侯”这个字已经被“转码”到AL32UTF8格式的了。

6.小结
通过这个实验我们妥善处理了两个实际问题,如果您没有遇到过,恭喜您,您很幸运。
1)Toad显示字符乱码问题
2)Windows XP环境或Toad环境下无法插入“某些汉字”和comments的问题

Good luck.

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/strawbingo/archive/2010/04/07/5458292.aspx

分享到:
评论

相关推荐

    Toad中文导出到Excel的乱码解决办法

    若选择“XLS Instance”,由于它与Excel实例直接交互,中文字符的处理通常更加准确,因此较少出现乱码问题。 需要注意的是,除了上述设置,还需要确保Excel自身也配置正确。确保Excel的默认语言设置支持中文,或者...

    TOAD导出EXCEL文件时中文乱码解决办法.txt

    具体到TOAD导出Excel文件的情况,当TOAD内部处理的字符集与Excel期望的字符集不一致时,中文字符就会显示为乱码。 #### 解决方案 1. **设置TOAD导出选项**: - 在TOAD中执行查询后,选择“导出”功能。 - 在弹出...

    PLSQL 中文乱码解决方案

    在IT行业中,遇到数据库字符集导致的PL/SQL中文乱码问题是非常常见的,尤其是在处理多语言环境下的数据时。本文将深入探讨这一问题,并提供一套详细的解决方案,帮助读者理解和解决因字符集不匹配而导致的PL/SQL中文...

    Toad 中文版 TOAD FOR ORALCE

    "Toad 中文版"意味着它已经本地化,支持简体中文界面,方便中国用户操作。 1. **数据库连接**:Toad for Oracle允许用户轻松连接到各种版本的Oracle数据库,只需输入必要的连接信息,如服务器地址、端口、服务名、...

    toad使用技巧说明

    2. **解决中文乱码问题**:如果遇到Toad显示中文乱码,可能是因为数据库服务器的NLS_LANG设置不正确。在Windows系统的环境变量中添加`NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P13`,以适应中文字符集。 3. **自动提示...

    TOAD 中文文档 TOAD 中文文档

    TOAD(Tool for Oracle Application Developers)是Quest Software公司开发的一款强大的Oracle数据库管理工具,尤其适合数据库管理员(DBAs)、开发人员和数据分析师使用。这款工具提供了全面的功能,包括数据库对象...

    OracleXE 导入系统缺少的包 更改字符集sql命令

    这通常涉及到数据库的完整性和兼容性,特别是当数据库实例需要处理多种语言或特殊字符时,字符集的设置至关重要。本文将深入探讨如何解决OracleXE导入系统时缺少的包问题以及如何更改数据库的字符集。 首先,"导入...

    Toad for Oracle 12.6 官方中文文档

    这个官方中文文档集包括了多个指南,以便用户能够更好地理解和使用这款软件。 1. **TOAD.chm**:这是一个帮助文件,通常包含了Toad for Oracle 12.6的各项功能和操作的详细说明。CHM(Compiled HTML Help)格式是...

    Toad for Oracle中文简易教程

    3. 结果集会显示在下方的“结果集”窗口,可以进行排序、过滤、导出等操作。 五、对象管理 1. 在“对象浏览器”窗口,可以查看数据库中的表、视图、存储过程、触发器等对象。 2. 右键选择对象,可以进行创建、修改...

    Toad for DB2解决方案(中文)

    ### Toad for DB2 解决方案知识点解析 #### 一、Toad for DB2 概述 Toad for DB2 是一款专为DB2数据库设计的高效开发与管理工具,适用于DBA(数据库管理员)及开发人员。该工具集成了模式浏览、SQL编程、调试、DBA...

    toad找到不到客户端

    ### Toad 找不到 Oracle 客户端问题解决方法 在使用 Toad for Oracle 进行数据库管理时,可能会遇到一个常见问题:“Toad 找不到 Oracle 客户端”。这种情况通常发生在 Toad 无法识别到正确安装的 Oracle 客户端...

    Toad 中文培训PPT

    Toad兼容Windows 95/98/NT/2000操作系统,客户端至少需要16MB RAM和15MB磁盘空间,服务器端需Oracle 7.3及以上版本。 **卸载** 卸载Toad相对简单,按照提供的步骤即可完成。 总结来说,Toad是一款全面的Oracle...

    toad for mac 2.4.3(解决mac上toad数据库过期无法使用问题)

    这个版本的发布主要是为了解决Mac用户在使用旧版Toad时遇到的数据库过期无法使用的问题,确保用户能够持续、稳定地进行数据库管理工作。 在Mac上使用Toad for Mac 2.4.3,用户可以享受到以下主要功能: 1. SQL开发...

    toad 8.5 中文说明

    Toad for Oracle是一款由Quest Software开发的强大Oracle数据库管理工具,主要面向DBA(数据库管理员)、开发者和分析师。本文将详细解读Toad 8.5版本的中文说明,帮助用户更好地理解和使用这款工具。 1. **简介** ...

    toad for mac 2.4.3(解决mac上toad过期问题)

    toad for mac 2.4.3(解决mac上toad过期问题)

    toad for mac 2.4.3(解决mac上toad过期无法使用问题)

    解决mac上toad过期无法使用问题

    Toad Edge 2.7.0 for windows x64

    Toad Edge 2.7.0 for windows x64

    Toad for DB2 license key 注册

    Toad for DB2是一款强大的数据库管理工具,专为IBM的DB2数据库系统设计。它提供了丰富的功能,包括SQL开发、数据库管理和性能优化等,极大地提高了DBA(数据库管理员)和开发人员的工作效率。在本话题中,我们将关注...

Global site tag (gtag.js) - Google Analytics