51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4345|回复: 1
打印 上一主题 下一主题

PHP连接MSSQL显示中文时为乱码

[复制链接]
  • TA的每日心情

    2014-10-28 13:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2014-9-5 09:20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    PHP连接MSSQL显示中文时为乱码主要是因为编码问题了,我们只要懂得一对于数据库与页面的编码统一处理就可以解决了,下面一起来看看下文。
    因为一直在使用 windows 下的 PHP 开发,用的是 mysql 数据库,偶尔也会遇到查询记录的乱码,那是因为 php 编码不支持中文进行导致的,直接将其进行编码解码即可解决,所以在 windows 平台下还是比较容易解决的。
    今天在帮一个客户进行 liunx 下维护 mssql 数据库的操作,因站点被攻击的原因,一直无法进行打开站点,折腾了很久,终于连接上mssql了,今天来了尝试下查询,么问题!
    可是出来的记录 中文 显示是?号或者就是一堆黑框框,这是典型的编码不对,于是查看了下php.ini关于mssql的这一块配置,发现有一项配置”mssql.charset”这一项,我配置成 “utf8”,成功解决乱码。
    因为我的程序页面用的是utf8所以配置成这样,如果是GBK/GB2312 就配置长相应的编码就应该能解决,当然遇到这样的问题还是要看相应情况的,这里还是建议如果能修改配置文件尽可能的去修改配置文件,因为这样才能一劳永逸的解决掉问题。
    例子
    代码如下         
    $serverName = "127.0.0.1,1433";
    $connectionInfo = array( "UID"=>"sa",
    &quotWD"=>"123456",
    "Database"=>"NopCommerce",
    "CharacterSet"=>"UTF-8"); // 这一行是重点
    $conn = sqlsrv_connect($serverName, $connectionInfo);
    注意事项:
    编码常用的是utf8-general-ci
    不只是表要统一,要统一的总共有四处
    一是:数据库类型,其中包括,数据库,表,字段三处都要统一,可以检查一下
    二是:文件的编码类型,你若用dw或editplus可以查看页面编码,不同需修改
    三是:访问数据库时的设置既set NAMES utf8;
    四是:浏览器显示方式,添加meta属性<meta charset=utf-8>
    不管用GBK,GB2312,这四处必须统一,看你缺少了哪一步
    用PHP操作MSSQL比在ASP连接MYSQL要简单,所以,当需要MSSQL与MYSQL并存时,用PHP连接MSSQL来操作MYSQL与MSSQL并存比较简单好用.如果是ASP连接MYSQL,需要安装一个MYSQL驱动,默认windows的ODBC没有安装,很遗憾...
    1.在web服务器上至少安装了mssql的客户端
    2.打开php.ini把;extension=php_mssql.dll前面的分号去掉
    有必要话:需要制定extension_dir
    3.推荐使用php<=4.0.9<=5.0.3目前我还没有连接成功过4.010和5.0.3
    4.数据库的连接分页可以到phpe.net上获取到相应的class
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2014-9-5 17:45:29 | 只看该作者
    真不知道,还有这么好心的楼主 支持
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 06:34 , Processed in 0.073354 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表