把这两天两次安装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中字符进行转换后再显示出来。(这只是我分析,没有找到证据)(本文由控件中国网转载)