PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码)
当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示。
解决办法:
这样,sql server 2008中的中文就可以在网页正常显示了。
如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文乱码问题
完整代码如下 :
<span style="color: #000000;">php </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 如果员工编号在MySql中不存在则在MySql中插入员工记录 * 如果该员工编号已经存在则进行更新操作 </span><span style="color: #008000;">*/</span> <span style="color: #008000;">//</span><span style="color: #008000;">如果用JSON格式则要使用text/html,不能使用text/xml</span> <span style="color: #008080;">header</span>("Content-Type: text/html;charset=utf-8"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> header("Content-Type: text/html;charset=GBK"); //告诉浏览器不要缓存数据</span> <span style="color: #008080;">header</span>("Cache-Control: no-cache"<span style="color: #000000;">); </span><span style="color: #0000ff;">require</span> '../conn.php'<span style="color: #000000;">; </span><span style="color: #800080;">$seq</span> = <span style="color: #800080;">$_POST</span>["seq"<span style="color: #000000;">]; </span><span style="color: #800080;">$employeeID</span> = <span style="color: #800080;">$_POST</span>["employeeID"<span style="color: #000000;">]; </span><span style="color: #800080;">$employeeName</span> = <span style="color: #800080;">$_POST</span>["employeeName"<span style="color: #000000;">]; </span><span style="color: #800080;">$department</span> = <span style="color: #800080;">$_POST</span>["department"<span style="color: #000000;">]; </span><span style="color: #0000ff;">if</span>(!<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$seq</span>) || <span style="color: #800080;">$seq</span> == ""){<span style="color: #008000;">//</span><span style="color: #008000;">seq不存在则插入新记录</span> <span style="color: #800080;">$query</span> = "<span style="color: #000000;">INSERT INTO employees (employeeID, employeeName, department, createTime, updateTime) VALUES (N'</span><span style="color: #800080;">$employeeID</span>',N'<span style="color: #800080;">$employeeName</span>',N'<span style="color: #800080;">$department</span><span style="color: #000000;">', getdate(), getdate())</span>"<span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span>{<span style="color: #008000;">//</span><span style="color: #008000;">如果seq已存在则更新已有记录</span> <span style="color: #800080;">$query</span> = "UPDATE employees SET employeeID='<span style="color: #800080;">$employeeID</span><span style="color: #000000;">', employeeName='</span><span style="color: #800080;">$employeeName</span>',department='<span style="color: #800080;">$department</span><span style="color: #000000;">', updateTime=getdate() WHERE seq='</span><span style="color: #800080;">$seq</span>'"<span style="color: #000000;">; } </span><span style="color: #008000;">//</span><span style="color: #008000;"> file_put_contents("E:/mylog.log", $query."\r\n",FILE_APPEND);//用于调试</span> <span style="color:#FF0000;"><span style="color: #800080;">$query</span> = <span style="color: #008080;">iconv</span>("utf-8", "gbk//ignore", <span style="color: #800080;">$query</span>);<span style="color: #008000;">//</span><span style="color: #008000;">为了解决中文乱码问题</span></span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$result</span> = sqlsrv_query(<span style="color: #800080;">$conn</span>, <span style="color: #800080;">$query</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">echo</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #0000ff;">echo</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">; } </span><span style="color: #008000;">//</span><span style="color: #008000;"> echo $query;</span> ?>