困扰了很久的issue,终于解了

上一篇 / 下一篇  2012-11-20 09:50:22 / 个人分类:自动化测试

  朋友公司自己研发的一款测试工具,用于验证不同数据库导入的各种字符集的数据是否正确无误。他们是使用代码来连接数据库,然后将读取到的数据库输入到文本文档中,由测试人员进行查看对比。从数据库中读GBK和UTF8字符集的数据,输入到文本文档中是正常显示的,而we8 Iso8859-1这个字符集的数据,输入到文本文档中是乱码。朋友最开始考虑到的以为是Oracle的字符集问题。就在想怎么将读出来的iso字符集在读入到文本文档之前先转成GBK或者是UTF8的格式,然后再保存到文本中。于是就上网找各种字符集转码函数,先是找VB.net写的转码函数,找来找去,发现网上根本没有,大部分都是Java或C#写的字符集转码函数。然后又是QQ找朋友,打电话问同学,问他们关于Oracle方面的问题。
 
    跟朋友聊聊之后,进一步确认不是oracle字符集的问题。索性就直接问他们字符集转换函数,直接将读出来的ISO字符集转成UTF8或者是GBK。朋友,同学将他们知道的网页内容,都发给我,然后我再转发。在第二周周一的时候,有个同学发了个C#的字符集转换函数,在VS中封装成dll文件,然后再引用,结果出错,当时以为是函数本身出错。后来朋友高兴地打电话告诉我说,考虑到服务器端和客户端的字符集不一样,服务器端是ISO字符集,客户端是文本文档的字符集,代码读取后保存,肯定会出问题,然后又说,转换函数不起作用,估计是在转码成GBK或UTF8之前就已经被转换了一次,然后再进行转换的时候,就不是we8 ISO8859-1的字符集了,所以转换不成功。于是就想服务器端的字符集是不能改变的,那就改变客户端吧,不用字符集转换函数。在保存数据的时候,就用代码强制将客户端的配置里面的字符集进行改变。想想这种想法在逻辑上是有点道理。
   于是就在开始尝试改客户端的字符集,结果还是以失败告终。网上的各种改变客户端字符集的方法都试了个遍,还是没能解决,眼看着时间一天天过去,这个问题已经花了2周多的时间了,天天加班还是无果。只明白了一个问题,那就是为什么开发每天都加班。
    这周一,又开始忙碌着,领导之前单独跟朋友聊这个问题,说oracle有个地方专门设置字符集的,让他找找看。于是就开始找,又打电话,让我问问别的朋友,“代码连接oracle时,字符串中有没有参数进行设置字符集的。”又顺便问问修改客户端的字符集除了网上的方法外,还有别的方法吗。又开始打电话求助各个朋友了,朋友还请出来他公司的高手。高手很忙,就发了个网页,让我自己看,看了看,网上的方法,改变服务器端的不可用,只能改变客户端的,就直接定位到改变客户端的字符集方法。刚打电话过去,朋友就说告诉我个坏消息,我还以为他要通宵加班。没想到,他告诉我,那个问题找到解决办法了。
     方法很简单,就是改变客户端的环境变量里面的字符集,将原来想用的UTF8改成GBk。方法是:我的电脑->右键属性->高级->系统环境变量->language 里面的改成GBK。就正常了。
 
    这个问题终于解决了,可以好好喘口气了。解决问题的关键还是要定位问题,然后找出相应的解决方案。这样才能达到节约时间成本。
  

TAG:

丫丫..的个人空间 引用 删除 丫丫..   /   2013-08-28 12:58:37
嗯,不错,关键点慢慢找总会找到的
 

评分:0

我来说两句

Open Toolbar