Sybase12.5数据中文乱码的问题

时间:2023-02-10 11:21:20
由于客户的需要,我们需要把系统移植到Sybase12.5(原来用的是Sql Server2000),用的VS.Net2003(C#) + Sybase ADO.NET,但是取出的数据中的中文全是乱码,开始以为字符集的问题,但是都是设置的cp850,并且用C++写一个测试程序(OleDB)测试正常。 后来发现所有的乱码都象是原来DOS平台不支持中文显示的汉字的形状。初步判断可能是Sybase是单字节存储(cp850)中数据被.NET取出后,每个字节单独形成了一个Unicode字符,所以成了乱码,而不能两个单字节形成一个汉字了(估计原因,呵呵),请教各位:有什么好的解决办法?或者修改字符集能解决问题?
我只能给100分,呵呵,不好意思,如果感觉不够的话另外再加。

14 个解决方案

#1


http://expert.csdn.net/Expert/topic/2213/2213608.xml?temp=.4067652

#2


奇怪了。我怎么没碰到这个问题呢。

 acewang(龍芯*Inside!) ( ) 提供的那帖子的问题我也没遇见啊。

 vs.net2002(c#) + win2kserver + sp3 + ace12.5

#3


blackwhole(整个儿黑):
你是怎么连接数据库的?我的是
win2003 + vs.net2003(c#) + ase12.5 ado.net

#4


ADO.NET啊。

在程序里直接连的。

先装了ACE的OLEDB驱动(我也就只装了这个,连ODBC都没装)。
然后程序里根据配置生成连接字符串:

connectText = "rovider=Sybase ASE OLE DB Provider;Server Name=192.168.0.1,4000;Initial Catalog=MyDB;User Id=sa;Password=***;";

然后就是正常操作。

#5


晕了。是Provider,呵呵。

#6


是AseConnection?

#7


public static OleDbConnection GetOleDbConnection(string strOleDbConnectionString)
{
OleDbConnection oleDbCN = new OleDbConnection();
oleDbCN.ConnectionString = strOleDbConnectionString;

oleDbCN.Open();

return oleDbCN;
}

#8


呵呵,我用OleDB也没有问题,想用Sybase 12.5SDK中提供的ADO.NET,类似于SqlConnection,效率会高一些。

#9


哦。呵呵~偶还没用过呢。

让偶来试试。

#10


我以前遇到过这个问题,中文乱码的出现是在你安装sybase数据库的时候,没有选择正确的中文编码,你说你查询过编码没有问题,不知道你是怎么查询的。我当初是重新安装sybase然后把数据库倒过来,才解决的,不知道我们遇到的情况是不是一致!

#11


编码看服务器(syconfig)和客户端(locales.dat)和连接串中(CharSet)都是指定的cp850,OleDB连接没有问题,但是AseConnection就不行。

#12


是不是ASE ADO.NET本身有问题?

#13


Sybase字符集中cp936和eucgb是支持双字节的汉字的,将字符集修改为cp936或eucgb再用AseConnection连接时应该没有问题了

#14


呵呵,OK

#1


http://expert.csdn.net/Expert/topic/2213/2213608.xml?temp=.4067652

#2


奇怪了。我怎么没碰到这个问题呢。

 acewang(龍芯*Inside!) ( ) 提供的那帖子的问题我也没遇见啊。

 vs.net2002(c#) + win2kserver + sp3 + ace12.5

#3


blackwhole(整个儿黑):
你是怎么连接数据库的?我的是
win2003 + vs.net2003(c#) + ase12.5 ado.net

#4


ADO.NET啊。

在程序里直接连的。

先装了ACE的OLEDB驱动(我也就只装了这个,连ODBC都没装)。
然后程序里根据配置生成连接字符串:

connectText = "rovider=Sybase ASE OLE DB Provider;Server Name=192.168.0.1,4000;Initial Catalog=MyDB;User Id=sa;Password=***;";

然后就是正常操作。

#5


晕了。是Provider,呵呵。

#6


是AseConnection?

#7


public static OleDbConnection GetOleDbConnection(string strOleDbConnectionString)
{
OleDbConnection oleDbCN = new OleDbConnection();
oleDbCN.ConnectionString = strOleDbConnectionString;

oleDbCN.Open();

return oleDbCN;
}

#8


呵呵,我用OleDB也没有问题,想用Sybase 12.5SDK中提供的ADO.NET,类似于SqlConnection,效率会高一些。

#9


哦。呵呵~偶还没用过呢。

让偶来试试。

#10


我以前遇到过这个问题,中文乱码的出现是在你安装sybase数据库的时候,没有选择正确的中文编码,你说你查询过编码没有问题,不知道你是怎么查询的。我当初是重新安装sybase然后把数据库倒过来,才解决的,不知道我们遇到的情况是不是一致!

#11


编码看服务器(syconfig)和客户端(locales.dat)和连接串中(CharSet)都是指定的cp850,OleDB连接没有问题,但是AseConnection就不行。

#12


是不是ASE ADO.NET本身有问题?

#13


Sybase字符集中cp936和eucgb是支持双字节的汉字的,将字符集修改为cp936或eucgb再用AseConnection连接时应该没有问题了

#14


呵呵,OK