php - 通过 odbc_connect() 连接到 SQL Server 数据库时出现编码问题
问题描述
首先,我没有选择在我的主机上使用最新的 SQLSRV 驱动程序,所以我被 odbc 连接卡住了。
$connection_string = 'DRIVER={SQL Server};SERVER=111.111.111.111;DATABASE=MY_DATABASE';
$user = 'name';
$pass = 'pass';
$connection = odbc_connect( $connection_string, $user, $pass, SQL_CUR_USE_ODBC );
该数据库的排序规则是Slovak_CI_AI
. 如果我将我的 PHP 标头设置为 utf-8,输出数据看起来很乱,编码是错误的。
如果我将“Slovak_CI_AI”作为字符集添加到我的 PHP 标头,数据显示正常,但可能不行,因为我需要在 WordPress 中处理这些数据,如果它们包含特殊/非英语,则无法处理它们字符(这些字符串看起来对 WP 来说是损坏的)。
我用 mb_convert_encoding、iconv 或 utf8_decode 尝试了很多转换,但没有运气。WordPress 使用 utf-8。
我找不到任何解决方案。
更新:我尝试添加CHARSET=UTF8
到我的 odbc 连接字符串,但没有运气。我还发现数据库中文本的字符集是 cp1250。我尝试将 cp1250 设置为我的 PHP 标头的字符集,输出很好,但是一旦遇到特殊字符,WordPress 仍然会失败。我尝试使用 iconv 将这些字符串从 cp1250 转换为 utf-8,但也没有运气 - 字符串在输出时编码错误,WordPress 也失败了。
解决方案
这整个编码的事情对我来说仍然感觉很混乱,但我设法做到了。它在以下情况下起作用:
- odbc 连接字符串包含
charset=cp1250
- PHP标头字符集设置为
utf-8
- 我将所有有问题的字符串从 cp1250 转换为 utf-8
iconv
推荐阅读
- c++ - 如何将此向量的元素添加在一起?
- amazon-web-services - AWS 在我的 CLI 上删除用户,但不在 IAM 上
- google-api - 使用带有颤振的 googleApis 对话框流时出现 403 错误
- java - Groovy ConcurrentHashMap forEach 调用
- angularjs - 用于动态图像的 Angular JS Bootstrap UI 模式
- python - 从特定 CDN 中查找所有资产的总加载时间
- postgresql - Postgres - 限制每个会话运行的过程
- python - PyQt 按钮不显示
- json - 如何在 D3 中正确加载本地 JSON?
- swift - SceneKit 自定义几何形状未显示