`

【字符集】处理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

分享到:
评论

相关推荐

    车牌识别系统设计实现系统方案过程算法.zip

    c语言入门

    qtpositioning-everywhere-src-6.6.0.zip

    qtpositioning-everywhere-src-6.6.0.zip

    led-tcp-mastcss js网页设计

    html css js网页设计

    全国各省农业高质量发展指数面板数据+指标体系参考文献-最新出炉.zip

    全国各省农业高质量发展指数面板数据+指标体系参考文献-最新出炉.zip

    2004-2020年省级绿色GDP测算、综合环境污染指数面板数据-最新出炉.zip

    2004-2020年省级绿色GDP测算、综合环境污染指数面板数据-最新出炉.zip

    【Unity插件】Perception 2 - Game Creator 2 简化并增强游戏开发流程

    文件名:Perception 2 Game Creator 2 by Catsoft Works v2.1.3 (29 Jul 2024).unitypackage Perception 2 | Game Creator 2 by Catsoft Works 是一款Unity插件,旨在简化并增强游戏开发流程,尤其适合没有太多编程经验的开发者。它提供了一系列工具,让开发者能够轻松创建复杂的游戏系统、AI行为和互动元素。以下是该插件的介绍: 主要功能: 可视化脚本: 该插件最突出的功能之一是基于节点的可视化脚本系统。开发者无需编写大量代码,就能通过拖拽和连接可视化元素,轻松创建复杂的游戏逻辑和行为。 游戏创建模块: 该插件支持模块化系统,这意味着你可以通过其他Game Creator 2模块(如角色、战斗、库存、对话等)扩展其功能。Perception 2与这些模块无缝集成,让开发者可以更专注于游戏的创意方面。 AI和NPC行为: 该工具允许创建智能且响应迅速的非玩家角色(NPC)。你可以设置感知系统,让NPC根据视觉、听觉或其他感官做出反应,赋予他们逼真的行为。

    C++进阶特性教程:模板、命名空间、运算符重载与异常处理

    内容概要:本文详细介绍了C++的多项进阶特性,包括模板的使用、命名空间与作用域的概念、运算符重载、异常处理以及智能指针等。具体内容涵盖模板的基础和高级应用,如函数模板、类模板、模板元编程、模板特化和偏特化;命名空间的定义与使用,以及作用域解析运算符的应用;常见运算符的重载方法及其示例;异常处理的基本概念、异常安全编程和标准异常类的使用;智能指针的种类和使用方法,包括shared_ptr、unique_ptr和weak_ptr。文章还介绍了C++11的新特性,如自动类型推导、范围for循环、右值引用与移动语义、线程库的使用,以及C++14和C++17的新特性。 适合人群:具备基本C++编程基础的开发人员,特别是对C++进阶特性感兴趣的中级和高级开发人员。 使用场景及目标:帮助读者深入理解和掌握C++的各种进阶特性,提升代码的可读性、可维护性和性能。具体应用场景包括泛型编程、代码组织、错误处理和并发编程等。 其他说明:本文提供了大量的示例代码,读者可以在实践中逐步熟悉并掌握这些进阶特性。建议在阅读过程中动手编写和测试相关代码,加深理解和记忆。

    【创新发文无忧】Matlab实现多元宇宙优化算法MVO-Kmean-Transformer-GRU故障诊断算法研究.rar

    【创新发文无忧】Matlab实现多元宇宙优化算法MVO-Kmean-Transformer-GRU故障诊断算法研究.rar

    Wincc 8.0补丁 LicenseService

    Wincc 8.0补丁 复制CCLicenseService 补丁到C:\Program Files (x86)\Common Files\Siemens\Bin文件夹下,以管理员身份运行,点击执行补丁,重启电脑

    datawhalechina的so-large-lm教程

    datawhalechina的so-large-lm教程

    【创新未发表】Matlab实现粒子群优化算法PSO-Kmean-Transformer-LSTM组合状态识别算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    JavaScript 43道面试题和答案(2025最新版).docx

    JavaScript 43道面试题和答案(2025最新版)

    jdk13-windows-x64安装包

    jdk13-windows-x64安装包

    全国地级市二手房价数据三条(2000-2024年)-最新出炉.zip

    全国地级市二手房价数据三条(2000-2024年)-最新出炉.zip

    【发文无忧】基于布谷鸟优化算法CS-Kmean-Transformer-GRU实现数据回归预测算法研究Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    全国计算机等级考试题库和复习资料

    全国计算机等级考试(NCRE)的题库和复习资料,包括计算机一级、二级、三级和四级等,提供所有等级和科目的题库和复习资料,助您逢考必过! 全国计算机等级考试(NCRE)报考地址:http://ncre.neea.edu.cn/ 仓库说明 1、仓库内有些文件太大超过了限制,所以压缩为多个分包,如…….part1.rar,…….part2.rar,…….part3.rar等,要将这些分包全部下载本地后才能解压。 2、目前已按照NCRE考试科目归类,每个科目文件夹里有对应的题库和复习资料。限于本人精力有限,还有很多科目只有空文件夹,没有任何考试复习资料,希望大家一起努力,将所有科目考试资料补充完整。 同时,建议勿上传破解版之类的软件和资料,以免引起不必要的麻烦。

    2023年国家自然科学基金管理科学部立项名单-最新出炉.zip

    2023年国家自然科学基金管理科学部立项名单-最新出炉.zip

    2024版计算机网络基础知识总结.docx

    计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们大天朝地广人多,地方性语言也非常丰富,而且方言之间差距巨大。A地区的方言可能B地区的人根本无法接受,所以我们要为全国人名进行沟通建立一个语言标准,这就是我们的普通话的作用。同样,放眼全球,我们与外国友人沟通的标准语言是英语,所以我们才要苦逼的学习英语。

    【故障诊断】基于蜣螂优化算法DBO优化长短记忆网络LSTM实现故障诊断附matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

Global site tag (gtag.js) - Google Analytics