首页 > 代码库 > php读取/写入mssql乱码!

php读取/写入mssql乱码!

最近在做PHP抓取,PHP+MSSQL的搭配。。呵。呵。。网上找了找资料好少。。看来是个大冷门呐。东看一下。西看一下。总算让我给鼓捣点东西出来。。(最近会陆续会有PHP+MSSQL方面的资料出来哦:>)。进入正题。

  PHP抓取是抓取出来了。。抓取新闻标题和新闻内容。一开始是把抓取到的标题和内容直接显示出来没有什么问题

php.ini中default_charset 项设置是这样的:default_charset = "utf-8"

但是光抓取下来得存入数据库呐。

这时候出问题了。

下面是加入数据库函数

*********************************************php code*******************************************************

function insert_db($title,$content,$lie)
{
   $dsn =‘DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=test‘;
$link=odbc_connect($dsn,‘sa‘,‘admin‘) or die(‘eeeor‘);
odbc_exec($link,"insert into news(".$lie.",content)values(‘".$titile."‘,‘".$content."‘)");
odbc_close($link);
}

*****************************************************************************************************************

但到数据库一看惨了。全是乱码。。网上找了一下文章。。看了看原来是因为文字编码的问题。

MSSQL中默认是chinese_prc规则编码排序。而我PHP中设置的是UTF-8所以会是乱码。但是我把php.ini的default_charset 项设置成GB2312抓取到的标题和内容存入MSSQL也是乱码。郁闷。先不管这个了。

既然编码不对。那么统一一下不就行了。。。

用下面这个函数:     iconv(),对指定内容进行编码转换同时返回编码后的内容。。。

iconv("utf-8",   "gb2312", $title) ;这样把抓到的标题转换一下存入MSSQL。。看了一下哈。。转换成功。一溜的中文标题。没有任何乱码。。呵。呵。。。

由于PHP是UTF-8那么显示的时候要对应哦。。。

iconv("gb2312",   "utf-8", $title) ;这样就可以在网页上显示正常的内容喽!!!

搞定~!

php读取/写入mssql乱码!