首先声明: 本文只能解决如下环境下的问题:
Oracle 服务器字符集是: SIMPLIFIED CHINESE_CHINA.WE8MSWIN1252; 客户端是一样的
VS2010连接串 Data Source=mydb;Persist Security Info=True;User ID=;Password=;providerName="System.Data.OracleClient"
解决的办法很简单,就是是通过以下语句进行转换即可:
读取时进行如下转换:
return System.Text.Encoding.GetEncoding(936).GetString(System.Text.Encoding.GetEncoding(1252).GetBytes(o.ToString()));
存储时采用如下转换:
public static string ISO8859_GB2312(string read)
{
if (!string.IsNullOrEmpty(read))
{
System.Text.Encoding WIN1252 = System.Text.Encoding.GetEncoding(1252);
System.Text.Encoding GB2312 = System.Text.Encoding.Default;
byte[] iso = GB2312.GetBytes(read);
return WIN1252.GetString(iso);
}
else
{
return string.Empty;
}
}