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) ;这样就可以在网页上显示正常的内容喽!!!

搞定~!

时间: 2024-10-27 04:19:24

php读取/写入mssql乱码!的相关文章

Redis 中文入库成功,读取数据写入文件乱码问题

最近需要用到redis ,但是在编码这个问题上,纠结了很久. 需求 : 每天一个进程将中文文件入库到redis中(不定时更新) ,另外几个进程读取redis中的信息 ,并处理数据结果. 使用的redis模块 : redis-py 问题 : 入库正常,读取数据成功,以GBK编码写入文件出现异常. 通过以下参数连接 redis : client  = redis.StrictRedis(host='localhost', port=6379, db=0, password="***") 从

PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)

PHP使用UTF8编码读取ACCESS的乱码问题解决方案 http://it.xwstudy.com/readnews.php?id=627 来源:本站编辑 发布日期:2013-05-27 已有 1790 人浏览过此信息 PHP搭配ACCESS是一个非常冷的话题,但是却有很多实用性,特别是从ASP转过来的程序员,对ACCESS有特殊的理解.学文培训在实际PHP培训中也会讲到ACCESS配合PHP的系统开发.那我们今天就来分享一下PHP+ACCESS的在实战开发中通常会遇到的UTF-8编码问题的解

InterliJ Idea 设置,解决读取配置文件中文乱码问题

InterliJ Idea 设置,解决读取配置文件中文乱码问题,简单粗暴有效 勾选最下面那个钩钩,这样在配置文件里写入中文的时候,实际保存的时候是经过转码的,这种方式能够兼容所有平台,包括Mac.windows .Linux

安装wls报(主清单位置 "/u01/app/oracle/inventory" 无效 (无法读取/写入/执行))

安装出现的错误: [[email protected] ~]$ java -jar fmw_12.1.3.0.0_wls.jar 启动程序日志文件为/tmp/OraInstall2019-07-31_10-09-36AM/launcher2019-07-31_10-09-36AM.log. 正在提取文件...... 主清单位置 "/u01/app/oracle/inventory" 无效 (无法读取/写入/执行). [[email protected] ~]$ 解决: 1.在wls主清

c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变

c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件前255字节以内的字符转换成相应的AscII码值的二进制表示,并存入输出文件a2.txt中.然后再将二进制文件还原并存入b2.txt文件. 参考链接:https://www.jb51.net/article/158695.htm 1 #include <cstdio> 2 #include <

Java里的IO流里的 ObjectInputStream 的读取\写入!

各位好!!我又来了!!今天遇见了一个小问题!! IO流里的对象读取总是出错!各种报错!!神烦啊!!百思不得其解啊!然后就上网百度!找了好久终于让我找到了!下面就让我来说一说! 当你用IO流里的对象流写入的时候,ObjectOutputStream会在文件中的开头和结尾进行一个标识AC/DC,ObjectInputStream会严格的根据开头和结尾来进行读取,当读取不到的时候就会进行报错!! ObjectOutputStream无法将上一次的对象的结尾的DC消除,所以千万不要用FileOutPut

读取/写入文件

读取文件: #直接读取 for line in open("d:\serverlist.txt"): print(line) #使用readline()方法读取 file = open('d:\serverlist.txt')line = file.readline()while line:print(line,end=‘’)file.close() #使用read()方法读取 f = open("d:\out.txt",'r')mm=f.read()f.close

android 读取,写入图片到sd卡源码

<pre name="code" class="html"><!--<span style="font-family: Arial, Helvetica, sans-serif;">在AndroidMainfest.xml文件中添加</span><span style="font-family: Arial, Helvetica, sans-serif;">-->&l

Java操作读取写入文本TXT及XML文件内容

package fileIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public class ReadTextFile { public BufferedReader bufread; public BufferedWriter bufwriter; File