在数据库服务器字符集为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
点击右边红色标题查看本文完整版:WINDOWS XP可以安装哪个版本的oracle?
我的操作系统是WINDOWS XP ,不知道能不能安装ORACLE,如果能安装的话,我应该安装ORACLE的哪个版本,需不需要什么特别的配置?
------解决方法--------------------
可以装的,8i、9i、10g都是可以的!
Windows 7和Windows XP共享互访设置
本文介绍Windows 7和Windows XP之间局域网互访共享设置方法,尽管设置过程并不复杂,但很多用户都会遇到这个共享问题,本文先看一下Windows 7和XP之间共享文件方法,打印机共享设置也差不多,以后再补充。关于Windows 7网络连接设置,请参考前面文章。
基础阅读:
Windows 7 ADSL网络连接和拨号连接设置方法
Windows 7的网络连接和共享设置教程
共享要求:Windows 7和Windows XP处于同一个工作组,比如WORKGROUP,本文在Windows 7旗舰版和Windows XP Professional SP3下测试通过。
一、在Windows 7端共享设置1、检查设置Windows 7工作组
Windows 7工作组设置方法如下:在桌面“我的电脑”图标上点击鼠标右键,选择属性,打开系统属性窗口,如下图,已经默认属于WORKGROUP,一般不需要修改,除非你需要指定起码名字工作组。(桌面上没有“我的电脑”图标的,可以通过“开始”菜单,选择控制面板-系统和安全-系统打开)
如需修改只需点击图中的“更改设置”,如下图,点击更改并输入新的工作组名称并点击确定即可。
2、修改Windows 7高级共享设置
先打开Windows 7的网络共享中心(打开方法:Windows 7的网络连接和共享设置教程 ),在网络共享中心,点击左侧的“更改高级共享设置”,如下图:
在上图配置中,需要启用家庭和工作网络以下设置:
- 启用网络发现
- 启用文件和打印机共享
- 启用公共文件夹共享(如果需要的话)
- 向下拉滚动条,会看到密码保护共享,如果启动密码保护共享,那么还需要为XP访问用户设置密码,如果允许任何人访问,只需关闭即可。
3、在Windows 7上设置共享的文件夹
这里为了测试,公共文件夹(图片、库、音乐等)默认处于共享状态(需开启上文的网络文件夹和打印机共享),非公共文件夹需要单独设置共享,设置方法如下:
在需要共享的文件夹上,鼠标右键选择属性,点击共享,如下图:
可以通过第一个“共享”按钮设定,也可以通过“高级共享”按钮设置,效果相同的。下图是高级共享设置,点击后在高级共享里再点击权限按钮,然后添加用户及对应权限,最后点确认即可。
二、Windows XP端设置1、检查设置Windows XP所属工作组
参考下图,已经是WORKGROUP了,所以跟Windows 7相同,无需修改,如果不同则需要统一到同一个工作组。修改方法:点击“更改...”,然后输入新的工作组名字并确认即可,可能需要重启计算机。
2、设置Windows XP共享文件夹
这里只是为了测试Windows 7访问Windows XP共享文件夹能力,可以设一个Windows XP共享文件夹,方法比较简单介绍从略。
三、查看Windows 7和Windows XP共享结果1、文件夹共享结果
如下图,可以看到,Windows 7和Windows XP全部可以互访,而且支持读取/写入操作(这需要在共享文件夹时给予授权)。
2、最可能遇到的防火墙共享访问问题
如果你刷新Windows 7无法看到Windows XP客户端,在Windows XP也无法打开Windows 7共享文件夹时,而且你已经按照上文操作方法完成,那么首先检查两个系统上安装的防火墙,一般多是因为第三方防火墙阻止引起。
不同防火墙访问规则设置不同,所以没办法一概而论描述,如果你只是临时共享一下而又不会调整防火墙规则时,建议可以把防火墙临时关闭掉,共享完马上再次开启。需要注意防火墙不要阻止共享访问,如果Windows XP总是报告“无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。找不到网络路径”,如上图,请检查Windows 7上安装的防病毒软件防火墙设置,可以通过交叉禁用测试、修改信任区域或指定可访问网段等方式,只要解决问题就行。
3、部分用户可能会遇到Windows XP账户权限问题,请参考Windows XP常用安全设置一览表开启GUEST和匿名用户登录。
参考链接:HowToGeek,参考文章还介绍打印机共享方法,天缘以后再补充,等不了的可以直接先看人家老外原文。