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

这篇具有很好参考价值的文章主要介绍了【已验证】解决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应用程序中文章来源地址https://www.toymoban.com/news/detail-743829.html

$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("张三")."'";

到了这里,关于【已验证】解决PHP连接SQL Server时中文乱码问题23.11.04的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL Server(解决问题)已成功与服务器建立连接,但是在登录过程中发生错误

    SQL Server(解决问题)已成功与服务器建立连接,但是在登录过程中发生错误。provider: Shared Memory Provider, error:0 - 管道的另一端上无任何进程。我们将 身份验证 选择为 SQL Server 身份验证。输入刚刚创建的用户名和密码: 但是现在还是不能直接使用,因为权限问题。你会看到下

    2024年02月06日
    浏览(47)
  • 问题解决:idea 中无法连接 sql server 数据库,报错 [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    报的错误信息如下: [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:721941c7-3e08-4e80-bc56-418e1c051624 sun.securi

    2024年02月12日
    浏览(61)
  • Navicat连接Visual Studio自带SQL server数据库,并配置账户密码及SQL server验证

    1. 打开Visual Studio(以2019为例,2022类似操作)进入项目工作区,依次点击菜单栏:\\\"视图\\\"--》”Sql Server 对象资源管理器“ 然后会发现有两个(有些是1个)带有localdb前缀的数据库实例: 3. 任选其一(此处以ProjectsV13为例,MSSQLLocalDB作者已做过修改不再重新配置),右键--》属性 4. 查

    2024年02月03日
    浏览(59)
  • 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误(从问题分析到解决方案)

            今天午休结束,准备工作,突然发现自己的SQLServer数据库链接不上了,一致提示以下错误: 无法连接到 .。 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。

    2024年02月10日
    浏览(57)
  • 一键去除网页BOM属性【解决乱码,头部空白,验证码不显示问题】

    几个常出现的问题: 1.网站打开空白 2.页面头部出现多余的空白 3.网站出现乱码,如“锘�” 4.后台登录验证码不显示  解决方案: 1.选用专业的编辑器,例如notepad++,sublime,editplus这样不会自动签名。 2.sublime通过如下操作File - Save with Encoding - UTF-8保存后即可去除bom 3.notep

    2024年02月14日
    浏览(37)
  • Sql Server远程连接遇到的问题

    如图: 原因:SqlServer和VS的安装顺序 这里是SqlServer和VS的安装顺序问题,VS会默认安装SQL Server 2016LocalDB,将这个卸载,配置管理器刷新一下就可以了。 解决方法:卸载SQL Server 2016LocalDB 卸载刷新后是这样的 PS:还有一点需要注意的是数据库的允许远程连接和MSSQLSERVER协议中的

    2024年02月04日
    浏览(51)
  • 解决ssh远程连接服务器出现的中文乱码问题

    ssh远程连接服务器出现中文乱码主要分为两种: 1、命令行输出的中文有乱码 比如ll输出的月份,ibus等命令输出的信息 2、vim打开文件,文件显示乱码 1、查看使用的XShell活MobaXterm等远程连接软件的会话属性。 以XShell为例:文件-当前会话属性/默认会话属性-终端-编码,设置成

    2024年02月06日
    浏览(71)
  • (解决方案) Visual Studio 2019 连接 SQL Server 2019 数据库时,数据库版本为904无法打开,此服务器支持852版及更低版本的问题

            我在做课设程序时连不上数据库,提示数据库版本太高。即使在数据库设置里把兼容性改到2016(852版)仍然无法连接,网上找的解决方法也不成功,自己摸索了一番找到了解决方法。 具体是直接连接数据库的服务器,而不是连接数据库本身,这样就能成功连接并使

    2024年02月11日
    浏览(65)
  • JDBC连接SQL Server数据库SSL异常问题

     异常如下: com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。 ClientConnectionId:04a8ece8-757c-411e-9599-734eba7795cd ... 异常中提到客户端偏好

    2024年02月12日
    浏览(51)
  • 远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法sql连接乱码

    今天在阿里云租了一个服务器,当我用sqlyog远程连接mysql时,报了plugin caching_sha2_password could not be loaded错,即无法加载插件缓存sha2密码,但是我在cmd窗口就可以访问,在网上找了很多解决方法都没有解决,最后找到了原因。在MySQL 8.0中,caching_sha2_password是默认的身份验证插件

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包