C# 操作SYBASE 数据库ASE 15.02版本 。
比如说SQL语句中:
select * from tb where iname = '中文'
在SQL Advantage是可以查到数据的,
但是到C#中操作,查询不到,换成英文或者数字是可以查询到数据的。SYBASE服务器的字符集iso_1,无法改变。
请问如果和解决,
试过select * from tb where iname = N'中文' 不行

解决方案 »

  1.   

    .NET的字符都是UTF-8存储...iso_1本身就是单字节字符集,就是用GB2312编码也是会出问题的...你改不了服务器字符集就很难办了...
      

  2.   

    读取ASE中文我用以下方法可以解决读取中文乱码的问题:string encode = string.Empty;
                byte[] bytes = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(str);
                try
                {
                    encode = System.Text.Encoding.Default.GetString(bytes);
                }
                catch
                {
                    encode = str;
                }
                return encode;
    但是我逆向操作就不行。这样的如果插入数据也应该是乱码,我暂时没有插入的权限
      

  3.   

    逆向操作当然不行,.NET字符只有一种编码UTF-16,而输出是UTF-8...其他编码只能以非字符形式存在,你试试编码成ISO-8859-1 byte数组看能不能支持,不能就没办法了只有改客户端与服务器字符集设置...