把这两天两次安装IBM2650服务器中出现的问题做一个总结:
1、***次安装,用IBM的引导盘引导,按步就班的下来,选择语言,做Raid5,选择Windows系统等等。安装好Windows2003企业版之后,再去安装Oracle时,安装到一半时,提示不能创建快捷方式。取消,再安装还是不能创建快捷方式,就那样安装上了。安装之后Oracle运行倒也正常,导入数据,发现中文变成了乱码。
再安装editplus和winrar发现显示窗口的中文也是乱码,右键菜单上的部分中文是乱码。在网上搜了一下,原来是Windows选择的字符集不对,在控制面板-语言修改成中文后,右键菜单上的中文正常显示了,查看Oracle数据库里的中文,也正常了。按说,到这里问题也就解决了,应该结束了。可是配置上ASP.NET网站之后,发现查询出来Oracle数据库中的中文,在网页上显示为乱码。
2、于是开始了解决Oracle数据库中中文在ASP.NET网页上显示为乱码的过程。在网上搜,绝大多数说是Oracle字符集的问题,可我觉得,用plsql developer查看中文正常,应该不是Oracle字符集的问题。下班了,晚上回去继续找,还是没有找到有效的解决办法。写了三个查看Oracle数据库中中文的小程序,一个是用VB6写成的,一个用.NET写成的Winform程序,一个用.NET写成的webform程序。同时计划比较服务器上的Oracle的字符集和和本机上的Oracle的字符集。
第二天,先运行VB6程序,显示Oracle数据库的中文正常,再运行.NET Winform程序Oracle数据库中的中文是乱码,运行.NET webform程序,Oracle数据库中的中文也是乱码。初步判断是.NET的字符集不正常。于是找怎么修改.NET的字符集的问题,找了半天也无找到有说.NET字符集的问题,可能不是.NET字符集的问题。
于是就查看了Oracle的字符集,结果发现服务器上的Oracle的字符集和我机器上的Oracle的字符集还真的不一样:我机器上的Oracle的字符集是中文NLS_CHARACTERSET:ZHS16GBK,而服务器上的字符集是:WE8MSWIN1252。那就想办法修改Oracle的字符集吧,可是由于对Oracle不是很熟悉,弄了老大一会也没有没有弄好,想把Oracle卸载了重装,结果不小心把系统也搞出了一些毛病,干脆重装了系统,注意了那些问题,安装之后也就一切OK。
3、分析:
1)安装Oracle时不能创建快捷方式,及安装其他程序也不能创建快捷方式,并且安装过程中窗口上中文是乱码,右键菜单上的部分中文是乱码,这个原因是Windows没有设置成中文,也就是在IBM的引导盘安装的过程中,不熟悉,没有注意选择正确的时区,正确的字符集造成的。
2)VB6程序显示的Oracle中文字符正常,而.NET显示的Oracle中文为乱码的原因应该是它们的机制不同造成的:VB6用的是oledb,它可能使用Oracle本身的字符集原样的显示了Oracle中的字符;而.NET用的是另外的一种机制,它要把Oracle中字符进行转换后再显示出来。(这只是我分析,没有找到证据)
【编辑推荐】