首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows 10上为Server设置ODBC驱动程序11的DSN编码

在Windows 10上为Server设置ODBC驱动程序11的DSN编码
EN

Stack Overflow用户
提问于 2015-12-10 15:27:43
回答 1查看 11.2K关注 0票数 6

TL;TR

如何强迫这个ODBC驱动程序在UTF-8中编码?

详细描述

我正在编写PHP5.5.应用程序,它使用驱动程序通过ODBC连接到数据库Microsoft 2014。更具体地说,我使用的是“Server的ODBC驱动程序11 ”。

我在两个环境(平台)中运行应用程序:

  1. 生产- Linux/Ubuntu/Appache PHP/UnixODBC
  2. 开发- Windows 10/Wamp

为了配置PDO连接,我使用DSN源。要连接到SQL服务器,我使用下面的命令:

代码语言:javascript
复制
$conn = new PDO("odbc:mssql_test", $user_name, $password);

因为它是PHP应用程序,所以我要求以UTF-8编码方式返回来自SQL的数据。当数据没有用UTF-8编码时,数据库中的数据具有捷克字符,这是很棘手的。

在生产平台上,一切正常工作。查询按预期返回(在UTF-8中)。

但是,我无法在 10 (开发平台)上配置DSN,以获得UFT-8中的数据(似乎正在获取win1250中编码的数据),当查询结果中捷克字符作为问号出现时,这一点非常明显。

要配置DSN,我使用Windows管理工具,位于:

代码语言:javascript
复制
C:\Windows\System32\odbcad32.exe

我将DSN添加到制表系统DSN,但没有设置编码的选项。

是否有任何方法或方法在Windows10上获取UTF-8中的数据(而不使用iconvmb_convert_encoding等方法,因为它唯一的开发问题重新出现了)。DSN配置问题)。

请注意,我试过这样想,但没有成功:

代码语言:javascript
复制
$conn = new PDO("odbc:mssql_test", $user_name, $password, array("charset" => "UTF-8"));
$conn->exec("set names utf8");

或者(下面的代码有效,但在Windows上无法获得UTF-8 )

代码语言:javascript
复制
$dsn = "odbc:DRIVER={ODBC Driver 11 for SQL Server};SERVER=$server_address};CHARSET=UFT-8";
$conn = new PDO($dsn, $user_name, $password);

任何帮助都是非常感谢的!

经过3个月的编辑,i最终切换到FreeTDS和Linux开发以及生产环境。目前,在使用PHP5.5时,将ODBC驱动程序11配置为在UTF-8中编码似乎是不可能的。在Windows 10上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-05 13:32:23

在Windows上使用ODBC时,数据库客户端字符集是在非Unicode应用程序的语言设置中定义的。Server客户端使用当前ANSI代码页(ACP)。

在Windows10上,单击“Start”并键入“Region”,选择“Region & language settings”,然后单击“管理语言设置”。单击Change system locale并检查使用unicode UTF-8 .

这应该能起作用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34205727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档