我用的就是这个类啊。。。
@qw123456: 为啥要用latin字符??
@王凌志: 因为项目中必须要用latin1字符集 ,我也想用gbk字符集啊。。。。就没那么多麻烦事了
查询出来的结果是乱码?
是乱码,但是 现在 只能用最笨的方法了
public static string ISO8859_GB2312(string read)
{
//声明字符集
System.Text.Encoding iso8859, gb2312;
//iso8859
iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
//国标2312
gb2312 = System.Text.Encoding.GetEncoding("gb2312");
byte[] iso;
iso = iso8859.GetBytes(read);
//返回转换后的字符
return gb2312.GetString(iso);
}
public static DataSet reqdsStr(DataSet ds)
{
DataTable dt = ds.Tables[0];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
string dsStr = ds.Tables[0].Rows[i][j].ToString();
string rqStr = ISO8859_GB2312(dsStr);
ds.Tables[0].Rows[i][j] = rqStr;
}
}
return ds;
}
@qw123456: 可以参考之前的一个博问(MySQL 字段别名乱码,在线等)的问题补充部分。
@dudu: 哦 谢谢 ,但是不能更改数据库,因为别的项目在用这个库 ,所以一点都不能改,我现在的方法 就是上面用的
public static string ISO8859_GB2312(string read)
{
//声明字符集
System.Text.Encoding iso8859, gb2312;
//iso8859
iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
//国标2312
gb2312 = System.Text.Encoding.GetEncoding("gb2312");
byte[] iso;
iso = iso8859.GetBytes(read);
//返回转换后的字符
return gb2312.GetString(iso);
}
public static DataSet reqdsStr(DataSet ds)
{
DataTable dt = ds.Tables[0];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
string dsStr = ds.Tables[0].Rows[i][j].ToString();
string rqStr = ISO8859_GB2312(dsStr);
ds.Tables[0].Rows[i][j] = rqStr;
}
}
return ds;
}
此方法只适用于 整体结构 封装性OK的情况下适用 。。。如果有多个返回集的话 。。。另想出入吧
你确定你的数据库的编码是utf-8的吧,不会是latin1的吧
如果你的数据库的编码是latin1的编码,不能进行改变,那你可以这样才编码你需要输入的中文:
goodsInfo.ShopDef.ShopDesc = Encoding.GetEncoding("Latin1").GetString(Encoding.GetEncoding("gb2312").GetBytes(goodsInfo.ShopDef.ShopDesc));
goodsInfo.ShopDef.ShopDesc 是定义的属性,是中文的。
数据库编码是latin1 ,数据库是utf-8 我都不要编码了。。asp。nent默认编码就是utf-8 我的问题也就不存在了
我刚才已经在上面 把我写发放写在上面了 针对连接mysql 类的 返回结果结果集dataSet进行处理 ,我想要的就是 不需要更改返回结果集 。呵呵 有好的办法 这个分数都给你
@qw123456:
那你可以提取数据出来的时候,把latin1的编码的文字转换成gb2312的不就行了,
查询给条件比较的时候,可以通过上面给出的代码把gb2312的转换成latin1
连接字符串中的charset=latin1 或者 charset=gb2312 或者 charset = gbk试试
你都知道数据库编码不是utf-8了,为什么还要“配置连接字符串 加入charset=utf8”呢?试试charset改成其它编码吧
其他都一样的。- -