【已验证】解决PHP连接SQL Server时中文乱码问题23.11.04

测试环境

--php8.2

--apache2.4

--sqlserver2022

一.PHP连接SQLSERVER中文乱码-【问题分析】编码问题

1、SQL语句中有中文会导致执行失败;

php连接sqlsever,输入中文,然后查询sqlserver中对应的数据,由于提交中文是UTF-8,而sqlserver的中文为GBK,所以字段无法匹配,没有查询结果

2、查询结果有中文会显示乱码。

php连接sqlsever,读取数据表数据,由于sqlserver的中文为GBK,而读出来的中文是UTF-8中文字符显示乱码

3、打开查询分析器, 运行以下语句:

SELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')

运行,查看结果,显示“936”,说明该数据库的编码为GBK

附表,如下:

936 简体中文GBK 
950 繁体中文BIG5 
437 美国/加拿大英语 
932 日文 949 韩文 
866 俄文 
65001 unicode UFT-8

编码问题:当数据从PHP应用程序传输到SQL Server时,如果编码不统一,就可能出现乱码问题。

二.开始解决问题-【解决方法】

第一,在php文件中添加下面代码,

header("content-Type: text/html; charset=utf-8");

PHP文件保持默认UTF-8编码;

第二,进行输入数据的转码工作

当插入数据,或修改数据的时候,把utf-8,转为gbk,存入数据库。

当获取数据的时候,将数据 gbk转为utf-8。

2、查询前对SQL转码

当数据使用utf-8编码从PHP应用程序传输到SQL Server中时,如果SQL Server使用默认的GBK编码,则数据会出现乱码。
这时我们需要在PHP中使用iconv转换编码,确保数据以正确的编码传输到SQL Server中

这样,$sql 就是包含正确编码的字符串,我们可以将它插入到SQL Server中,然后可以顺利地查询出来了

接下来就可以用php函数iconv来对传入sql内的值进行中文转码处理:

$sql = "SELECT '是'='是'"; 
$sql=iconv('UTF-8','GBK',$sql);

3、查询结果对含中文列转码

SQL Server会返回乱码。这是因为SQL Server中的表格或字段使用了GBK编码,

这时我们需要在PHP中使用iconv转换编码,gbk转为utf-8,确保数据以正确的编码传输到PHP应用程序中

$stmt = sqlsrv_query( $conn, $sql);
if($stmt){
    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
        echo iconv('GBK','UTF-8',$row[0])."<br />";
    }
}

 function str($str){
   $str=iconv ( "utf-8", "GBK", $str );
   return $str;
 }

$sql1 = "select * from sql_rvi_wx where name='".str("张三")."'";

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是200个符合要求的数字(每行显示10个): 35.56 86.94 58.10 36.44 38.62 97.34 69.83 46.13 74.45 23.13 28.54 16.91 57.05 25.31 11.66 71.27 49.28 75.85 87.38 53.87 80.67 29.62 65.48 40.16 98.36 84.66 84.84 89.87 50.39 88.81 72.73 51.03 53.25 34.95 96.84 23.26 95.17 78.88 26.34 64.10 68.41 89.01 93.12 82.38 12.15 51.23 12.28 85.62 22.61 57.38 13.67 84.67 95.36 94.93 86.94 27.91 71.36 91.33 88.25 56.78 99.47 94.52 63.41 60.63 99.94 58.74 66.22 96.03 44.09 84.35 8.43 16.96 45.23 97.01 3.08 10.75 39.37 65.03 61.49 79.03 81.69 42.46 74.87 1.35 27.78 27.41 71.74 19.07 76.04 69.92 24.81 13.58 97.55 42.21 37.00 21.05 29.63 24.38 4.94 10.75 55.05 39.64 84.55 50.26 91.18 51.90 30.81 68.95 21.33 16.15 77.57 47.41 45.84 18.28 18.08 98.53 63.84 57.77 61.88 96.20 49.02 79.13 4.47 94.11 11.08 68.39 81.55 13.44 94.00 48.60 61.74 50.90 65.03 17.35 90.86 7.16 50.97 4.49 76.73 19.12 3.72 15.37 92.72 53.97 2.80 33.53 16.30 9.62 71.82 98.56 93.53 23.67 10.15 93.72 9.97 82.01 21.90 8.89 96.31 58.99 42.04 19.87 30.25 51.72 95.25 79.22 92.67 50.44 5.24 8.40 6.34 60.05 39.23 22.52 46.88 82.50 49.61 23.58 19.80 76.08 87.23 47.36 47.54 23.02 94.07 56.08 46.15 30.93 38.25 10.80 78.93 9.08 47.90 62.77 39.33 40.53 91.20 69.47 23.11 82.31 7.01 99.51 21.98 91.08 20.44 14.05 29.85 60.80 27.74 71.57 98.54 95.41 72.45 5.99 50.81 40.23 12.65 58.17 39.50 96.02 67.35 70.23 22.19 53.95 77.82 53.28 17.17 38.05 12.54 20.47 66.94 90.15 66.60 1.56 43.13 67.63 72.11 3.63 89.93 49.47 59.45 80.82 85.69 40.34 28.23 26.08 31.65 31.53 28.10 2.75 46.58 48.00 77.71 54.95 75.40 29.15 91.48 74.23 34.61 26.34 79.34 14.85 5.32 30.56 88.04 56.96 20.83 36.07 65.76 55.81 57.37 66.48 60.13 26.26 92.14 4.68 9.86 22.11 90.82 8.50 77.17 33.12 95.92 63.95 49.36 78.03 63.65 89.54 66.44 47.75 70.14 83.34 4.09 94.35 32.52 88.12 24.28 20.59 27.25 91.85 55.92 76.41 68.15 2.07 71.65 92.91 78.44 30.47 37.51 76.16 5.83 49.10 45.69 63.06 69.88 27.08 90.73 82.25 54.97 8.45 44.51 78.38 48.07 77.84 14.92 23.07 58.48 15.34 90.17 18.13 56.50 11.83 67.59 45.08 16.29 99.22 56.26 72.43 83.30 14.43 70.21 87.07 37.82 22.45 9.66 20.98 76.44 25.72 83.64 66.77 7.70 57.71 88.17 74.92 91.87 75.00 2.09 73.08 22.99 16.04 33.91 48.29 1.57 81.48 91.43 75.25 30.34 58.59 75.15 79.80 82.77 21.81 75.04 44.75 49.01 42.87 94.03 66.22 98.07 43.05 90.44 59.81 13.83 49.56 27.36 87.66 50.71 18.88 23.80 91.66 79.79 1.37 6.49 57.94 18.43 17.21 41.77 71.10 67.15 79.11 49.76 44.57 91.46 18.25 53.73 83.98 97.88 34.07 28.86 65.54 38.24 28.97 59.51 57.87 45.93 75.55 73.03 83.51 77.50 85.58 34.19 41.97 5.89 47.29 27.17 88.68 99.09 38.91 65.15 44.71 55.39 2.21 33.96 61.99 60.72 81.43 31.70 69.61 4.62 47.26 63.52 49.45 9.22 90.13 2.54 77.10 35.11 56.84 84.58 58.32

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值