C#客户端
使用oracle client连接数据库现在数据库使用的是GBK编码
维语在数据库中是乱码,全是问号,因为GBK编码中没有维语的码段现在通过调试,发现C#客户端取来数据时就已经是乱码,因为貌似使用的缺省编码是GB2312
然后再经过任何编码转换,都不起作用。但是用文本文件做过测试,如果是用GB18030的方式去读,
结果能正确显示现在想知道,去数据库里取数据的时候能指定编码格式么?

解决方案 »

  1.   

    直接转成二进制数据存到数据库中,然后取出来后在转成string形式就好了,应该没问题,我以前做过类似的东西
      

  2.   

    我用Oledb读的
    而且还设置了
    atuo translate= false
    都不行
      

  3.   

    你最好在数据库中查询一下,看看是不是乱码,如果在数据库中直接查询的时候都是乱码,就会出问题的。至于查询的时候,其实DataReader查询出来的都是Object的,就看你怎么转型,如果是字符串的话,都可以直接转换成C#的string的。C#的char是32位的,包含了所有的Unicode字符,所以,转换成C#的编码是没有问题的。如果真要从二进制数据读的话,应该就更没问题了。SqlDataReader reader = ...;
    reader.Read();
    byte[] databuffer1 = (byte[])reader[0];
    string datastr_ascii = Encoding.ASCII.GetString(databuffer1);
    //如果用gb2312编码可以这样
    string datastr_gb2312 = Encoding.GetEncoding("gb2312").GetString(databuffer1);你看看这样还是不是乱码?