[英]Set DSN encoding for ODBC Driver 11 for SQL Server on Windows 10
如何强制此ODBC驱动程序以UTF-8编码?
我正在编写PHP 5. 5. 使用ODBC驱动程序通过PDO连接到数据库Microsoft SQL Server 2014的应用程序 。 更具体地说,我正在使用“ 用于SQL Server的ODBC驱动程序11 ”。
我在两个环境(平台)中运行应用程序:
要配置PDO连接,我正在使用DSN源。 要连接到SQL服务器,请使用以下命令:
$conn = new PDO("odbc:mssql_test", $user_name, $password);
由于它是PHP应用程序,我需要以UTF-8编码返回SQL中的数据。 数据库中的数据具有捷克字符,这在数据未以UTF-8编码时很棘手。
在生产平台上,一切正常。 查询按预期返回(以UTF-8格式)。
但是,我无法在Windows 10 (开发平台) 上配置DSN ,以获取UFT-8中的数据(似乎我得到的数据是在win1250中编码的 ),当捷克字符作为问号出现时,这是值得注意的。查询。
要配置DSN,我使用的是位于以下位置的Windows DSN管理工具:
C:\Windows\System32\odbcad32.exe
我将DSN添加到标签System DSN,但没有设置编码的选项。
有没有办法或解决方法在Windows 10上以UTF-8获取数据 (不使用像iconv
, mb_convert_encoding
这样的PHP方式,因为它唯一的开发问题和DSN配置问题)。
请注意,我已经尝试过,但没有成功:
$conn = new PDO("odbc:mssql_test", $user_name, $password, array("charset" => "UTF-8"));
$conn->exec("set names utf8");
或(代码如下工作,但在Windows上无法获得UTF-8)
$dsn = "odbc:DRIVER={ODBC Driver 11 for SQL Server};SERVER=$server_address};CHARSET=UFT-8";
$conn = new PDO($dsn, $user_name, $password);
任何帮助将非常感激!
编辑3个月后,我最终转而使用FreeTDS和Linux进行开发以及生产环境。 目前,在使用PHP 5.5时,似乎无法配置ODBC驱动程序11以UTF-8编码。 在Windows 10上...
在Windows上使用ODBC时,数据库客户端字符集在非Unicode应用程序的语言设置中定义。 当前的ANSI代码页(ACP)由SQL Server客户端使用。
在Windows 10上,单击“ 开始” ,键入“ 区域” ,选择“ 区域和语言设置” ,然后单击“ 管理语言设置 单击Change system locale并选中Use unicode UTF-8 ...
这应该够了吧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.