今天出現了一個悲據的問題
有個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 |
但這樣很麻煩。有木有人有好的解決辦法。庫的編碼不改的情況下.
