c#连mysql的latin1编码乱码问题
今天出现了一个悲据的问题
有个mysql库用的是latin1编码。我用c#查询怎么都是乱码。无论加charset=latin1或set names latin1都没用
code | name | mapcode | remark | order_index |
---|---|---|---|---|
ALL_ALL | ËùÓÐ | ALL_ALL | ËùÓÐ | 0 |
eeee | PC | xxx | ÔÚPC¶Ë´óÌü½øÐеÄÓÎÏ· | 10 |
fff | ÎÞÏß | wx | ÔÚÎÞÏßÏà¹ØÖÕ¶ËÉϽøÐеÄÓÎÏ· | 20 |
aaa | WGP | eeee | ÔÚ¸÷ÀàwebÃÅ»§ÉϽøÐеÄÓÎÏ· | 30 |
ccvb | ÐÂÖÕ¶Ë | xzd | ÔÚ¸÷ÀàÐÂÖÕ¶ËÉϽøÐеÄÓÎÏ· | 40 |
-1 | δ֪ | -1 | δ֪ | 99999 |
改什么编码都没有。
最后我在C#中调试时,发现connection中有个encoding属性。但它只有运行时可见,用的是gb2312
我就如此试了一下
string turnlatin1string(string source) {
var en = System.Text.Encoding.GetEncoding("latin1");
var bs = en.GetBytes(source);
var a = System.Text.Encoding.Default.GetString(bs);
return a;
}
对每个字符串结果都如此转一下后正常了。
ALL_ALL | 所有 | ALL_ALL | 所有 | 0 |
ff_32 | e | vx | 33的游戏 | 10 |
ff_64 | da线 | wx | xc进行的游戏 | 20 |
ee_96 | WGP | wgp | fa的游戏 | 30 |
ee_128 | aa端 | xzd | bbb行的游戏 | 40 |
-1 | 未知 | -1 | 未知 | 99999 |
但这样很麻烦。有木有人有好的解决办法。库的编码不改的情况下.