后台是Sybase11.5的库文件,存在了多年了,一直正常工作。因企业需要我用C#+Sybase.Data.AseClient连接向库中写入数据,但写入的中文数据全部是乱码。有什么办法解决,试过多次,快要吐血了...
连接串:Data Source=192.168.1.11;Port=5000;UID=sa;PWD=;Database=db;charset=iso_1;language=us_english;我想知道我在前端如何使数据正确的写入,而不是再改服务器端。谢谢
连接串:Data Source=192.168.1.11;Port=5000;UID=sa;PWD=;Database=db;charset=iso_1;language=us_english;我想知道我在前端如何使数据正确的写入,而不是再改服务器端。谢谢
例如insert into table(name) values (N‘CSDN网站’);
string oldHtml = GetYourGB2312Html(); //
Encoding encoding;
encoding = System.Text.Encoding.GetEncoding( "GB2312 ");
// string > bytes
byte[] bytes = encoding.GetBytes(oldHtml);
encoding = System.Text.Encoding.UTF8;
// bytes > string
string newOldHtml = encoding.GetString(bytes);
//Response.Write(newOldHtml);
这样就可以把gb2312转成utf8了
因为它没有 nvarchar 和 ntext 字段
1>select name,id from syscharsets
2>go
找到name为cp936对应的id(假设为117)
.1>sp_configure "default character set id",117
2>go
加个N吧!
插入中文前加N试试。可能是你使用的Sybase客户端和Sybase服务器端采用了不同的字符集。
你必须要保证Sybase客户端和Sybase服务器端采用了相同的字符集,否则,Sybase就会自动做转换。
这和oracle的SQL PLUS一样。
你可以通过这个来查询客户端采用的字符集
1> select @@client_csname,@@client_csid,@@char_convert
2> go
------------------------------ ------ ---
iso_1 1 0或者,你可以禁止转换,sp_configure 'disable character set conversion'
这是在生成的语句:
insert into wzk (ch,dw,fx,pm,gg,mz,pz,jz,scy,sj,time1,time2,bh) values(N'012-5',N'一班',N'进',N'矿石',N'',20760,8370,12390,N'sys','20050830','08:29:36','08:29:36',N'00000010')数据插入后中文显示的全是???
我已经试过了,问题没有解决。服务器的字符集是iso_1,我只能适应而不能更改。