搞定编码!

辛苦了两三天,终于把编码做完了。可惜在csdn上发了一篇文章,白瞎了40分的积分,赶紧申请一个帐号把分数结果来:)

其实说起来并不困难。wordpress中先将web页上的信息以utf-8的编码方式存入mysql数据库;之后我的客户端发查询请求。mysql返回的格式还是utf-8 的编码。关键在于如何将其返回为utf-8 的字符串。

由于MySQLDataReader (更普遍的说,SQLDataReader也是这样)中获得字符串的方式是:MySQLDataReader.GetString(int i)。但是系统默认的编码是gb2312。这样获得的字符串当然是乱码。即使后来我再使用
Encoding.UTF8.GetString( Encoding.GetEncoding(“gb2312”).GetBytes(Content));
也会出现少数“?”这样不能显示的字符。

所以最好的方法是在没有变成字符串之前就用utf-8的编码生成字符串。我想了一想,一共有两个方法:

  • 修改系统默认编码的

这种方法貌似可以,其实不然。因为Encoding.Default是只读的属性,不能被修改的。

  • 获得原始对象,在进行转化

正在郁闷中,突然发现一个MySQLDataReader.GetValue(int i)的方法。返回的是一个object,就是它了!

我的解决方法是用了下面的语句:
this.Content=Encoding.UTF8.GetString((byte[])DBReader.GetValue(2));

一切正常了……

Leave a Reply

Your email address will not be published. Required fields are marked *