从sysbase数据库取出来的数据乱码

Chng100818 2016-08-09 02:57:36
用dataGridView显示从sysbase数据库取出来中文字乱码,英文和数字都正常,请问如何解决?

...全文
397 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chng100818 2016-08-11
  • 打赏
  • 举报
回复
foreach (DataRow dataRow in dt.Rows) { byte[] unknow = Encoding.GetEncoding(850).GetBytes(Convert.ToString(dataRow[3])); string Big5 = Encoding.GetEncoding(950).GetString(unknow); dataRow[3] = Big5; } 解决了,谢谢各位.
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
嘩。。。sybase數據庫里面的中文字已經是亂碼
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
剛剛在Sybase Interactive SQL運行 SELECT DB_PROPERTY( 'CharSet' ),看到charSet是cp850
秋的红果实 2016-08-10
  • 打赏
  • 举报
回复
最好先问问另一套程序的程序员,数据库的情况
xuzuning 2016-08-10
  • 打赏
  • 举报
回复
1、charset 指定的是你需要的字符集,而不是字段中实际保存的字符集 2、在连接数据库时,取消自动字符集识别,就可获得原始数据串 3、你最好给出乱码数据的 base64 编码和不乱码的内容,以供探索转换算法
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
再頂頂,求助
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
if(dataGridView1.RowCount!= 0)
{
for (int j=0;j<dataGridView1.RowCount;j++)
{
var f = dataGridView1.Rows[j].Cells[3].Value.ToString(); //这里出错,並未將物件參考設定為物件的執行個體。
byte[] unknow = Encoding.GetEncoding(850).GetBytes(f);
string Big5 = Encoding.GetEncoding(950).GetString(unknow);
dataGridView1.Rows[j].Cells[3].Value = Big5;
}
}
xuzuning 2016-08-10
  • 打赏
  • 举报
回复
循环一下不就可以了吗?
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
byte[] unknow = Encoding.GetEncoding(850).GetBytes(dataGridView1.Rows[3].Cells[3].Value.ToString()); string Big5 = Encoding.GetEncoding(950).GetString(unknow); MessageBox.Show(Big5); 现在dataGridView第4行4格那个中文字可以正常显示了,有什么方法把整个dataGridView都编码吗?
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
試了這個轉換也不行, string str; str = dataGridView1.Rows[3].Cells[3].Value.ToString(); Encoding utf8 = Encoding.GetEncoding(850); Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936 byte[] temp = utf8.GetBytes(str); byte[] temp1 = Encoding.Convert(utf8, gb2312, temp); string result = gb2312.GetString(temp1); MessageBox.Show(result);
Chng100818 2016-08-10
  • 打赏
  • 举报
回复
引用 16 楼 xuzuning 的回复:
cp850 是单字节字符集,保存中文时把汉字拆开了,自然看到的是乱码 你需要将读取道德数据再组装回去
版主,有没有相关的C#代码 或文章可以参考?新手学C#,感觉好复杂
xuzuning 2016-08-10
  • 打赏
  • 举报
回复
cp850 是单字节字符集,保存中文时把汉字拆开了,自然看到的是乱码 你需要将读取道德数据再组装回去
Chng100818 2016-08-09
  • 打赏
  • 举报
回复
引用 8 楼 mjp1234airen4385 的回复:
查查sybase默认的字符集是什么,或者你问问另外一套程序用的那个字符集。
或者使用utf8试试看


问过了,他说没有什么字符集.
试过UTF8也不对。


请问从那个可以查询数据库用什么字符集?
圣殿骑士18 2016-08-09
  • 打赏
  • 举报
回复
connectionString连接串中指定字符集
mjp1234airen4385 2016-08-09
  • 打赏
  • 举报
回复
查查sybase默认的字符集是什么,或者你问问另外一套程序用的那个字符集。 或者使用utf8试试看
Chng100818 2016-08-09
  • 打赏
  • 举报
回复
引用 6 楼 mjp1234airen4385 的回复:
在数据库连接的时候,指定下字符集试试看
OdbcConnection DbConnection = new OdbcConnection("PROVIDER=MSDASQL;DSN=Tendfame50; Uid=XXX; Pwd=XXX; Timeout = 600;charset=iso_1;"); charset试过了936,850都不行
mjp1234airen4385 2016-08-09
  • 打赏
  • 举报
回复
在数据库连接的时候,指定下字符集试试看
Chng100818 2016-08-09
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
其实数据库乱码事情都一样,先确认是不是数据库里面已经乱码了,如果是的话,莫宰羊,不是的话,读取时指定chartset
请问如何指定chartset??
Chng100818 2016-08-09
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
其实数据库乱码事情都一样,先确认是不是数据库里面已经乱码了,如果是的话,莫宰羊,不是的话,读取时指定chartset
数据库不会乱码,因为sysbase这个数据库是我公司别外一套程序用的数据库,我现在要从这个数据库里面取data出来给同事用.
加载更多回复(2)

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧