php 扩展pdo查询SqlServer中文乱码问题

默认是utf-8

或者可以强制utf-8

PDO::SQLSRV_ATTR_ENCODING=>PDO::SQLSRV_ENCODING_UTF8

microsoft文档内容:(常量 (Microsoft Drivers for PHP for SQL Server) - PHP drivers for SQL Server | Microsoft Learn

编码常量

PDO::SQLSRV_ATTR_ENCODING 属性可传递给 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、PDOStatement::bindColumn 和 PDOStatement::bindParam。

传递给 PDO::SQLSRV_ATTR_ENCODING 的可用值如下

PDO_SQLSRV 驱动程序常量 说明
PDO::SQLSRV_ENCODING_BINARY 数据是来自服务器的原始字节流,无需执行编码或转换。

对 PDO::setAttribute 无效。
PDO::SQLSRV_ENCODING_SYSTEM 数据是 8 位字符,该格式如在系统上设置的 Windows 区域设置的代码页中所指定。 任何多字节字符或未映射到此代码页中的字符都会替换为单字节问号 (?) 字符。
PDO::SQLSRV_ENCODING_UTF8 数据采用 UTF-8 编码。 这是默认编码。
PDO::SQLSRV_ENCODING_DEFAULT 使用 PDO::SQLSRV_ENCODING_SYSTEM(如果在连接过程中已指定)。

使用连接的编码(如果已在准备语句中指定)。

PDO::SQLSRV_ENCODING_SYSTEM 是 PHP PDO 扩展用于连接 Microsoft SQL Server 数据库时的一个字符编码常量。这个常量用于指定从数据库返回的字符串数据的预期字符编码,以便在应用程序中正确地解码和显示这些数据。

具体来说,PDO::SQLSRV_ENCODING_SYSTEM 常量表示使用系统默认的字符编码来处理从数据库返回的字符串。这意味着返回的字符串数据将按照数据库所在操作系统的默认字符编码进行解码。

这在一些特定的情况下可能很有用,特别是当你的应用程序需要与不同字符编码设置的 SQL Server 数据库进行交互时。通过使用 PDO::SQLSRV_ENCODING_SYSTEM,你可以确保从不同的数据库中返回的字符串数据在应用程序中都能够正确地显示,因为它们将被解码为操作系统默认的字符编码。

然而,需要注意的是,使用系统默认字符编码可能会导致一些跨平台的问题,因为不同操作系统的默认字符编码可能会有所不同。如果你的应用程序要求更严格的字符编码一致性,可能需要根据需要明确指定字符编码,例如使用 PDO::SQLSRV_ENCODING_UTF8 来强制使用 UTF-8 编码处理返回的字符串数据。

 

你可能感兴趣的:(php,开发语言)