服务商说 Mysql 的编码应该是utf8的的,我把Blog Engine 的文件全部改为utf8格式了,还是乱码,请问如何解决这个问题?http://www.hywh.net/blogfln/

解决方案 »

  1.   

    1、确认你的库是utf-8编码的,在MySQL5之后可以设置系统级编码,还可以针对单个数据库设定编码的;
    2、在web.config中配置一下。asp.net夜话之十一:web.config详解
    在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代码再重新编译,这种部署方式非常麻烦。在.net中提供了一种便捷的保存项目配置信息的办法,那就是利用配置文件,配置文件的文件后缀一般是.config,在asp.net中配置文件名一般默认是web.config。每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中。在发布Web应用程序时web.config文件并不编译进dll文件中。如果将来客户端发生了变化,仅仅需要用记事本打开web.config文件编辑相关设置就可以重新正常使用,非常方便。本篇要讲述的知识如下:配置文件的查找优先级配置文件节点说明配置文件的操作
      

  2.   

    <globalization>节点:
    用于配置应用程序的全球化设置。此节点有几个比较重要的属性,分别如下:
    属性名 说明
    fileEncoding 可选属性。设置.aspx、.asmx 和 .asax 文件的存储编码。
    requestEncoding 可选属性。设置客户端请求的编码,默认为UTF-8.
    responseEncoding 可选属性。设置服务器端响应的编码,默认为UTF-8.
    以下就是asp.net应用程序中的默认配置:<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
    我自己就开发过使用MySQL作为数据库的ASP.NET网站,一点问题也没有。
      

  3.   

    谢谢zhoufoxcn 兄的回复。我用select charset(字段) from table_name 得出的结果是 latin1, 数据库应该是使用 latin1 编码的
    alter database BlogEngine default character set utf8 , 执行这样的语句后,可以改变数据库的编码吗?原先已存在的数据好像还是 latin1。是不是要删除数据库重新建立。
      

  4.   

    如果原来建数据库的时候使用的编码是latin1,并且已经存在大量数据,好像可以通过在连接字符串中加编码标识解决吧,以前在做JSP开发时遇到过这样的问题,吭苦了,所以后来使用MySQL时编码统一设定为UTF-8。