【发布时间】:2015-12-04 04:54:55
【问题描述】:
我正在对远程 mssql 数据库执行一些请求并成功获得响应。 Linux 服务器 RHEL 6 配置为通过 php pdo_dblib 连接到 mssql。
但问题是编码在某种程度上是不正确的。
我在 Apache httpd.conf 中有默认字符集 = UTF-8,在 freetds.conf 中也是如此,并且:Content-Type:text/html; charset=utf-8 .
但是当我尝试获取数据时,我看到了 ASCII 等等。也只有使用iconv( 'cp1251', 'utf-8', $row_v );后才能阅读俄语字母
foreach($rowContent as $row){
$html .= '<tr>';
foreach ($row as $row_k=>$row_v)
$html .= '<td>'.$row_v.' ---> '. iconv( 'cp1251', 'utf-8', $row_v ).' - '. mb_detect_encoding($row_v) .' </td>';
$html .= '</tr>';
}
$html .= '</table>';
return $html;
【问题讨论】:
-
咨询 stackoverflow.com/questions/279170/utf-8-all-the-way-through 并在查询前尝试在连接中传递 UTF8。
-
阅读主题,谢谢,但是...我有 MsSQL,不能使用 set NAMES utf-8 & close to it,因为它不是 mysql。 apache的默认字符集已设置,pdo_dblib(freetds)驱动也有UTF-8编码,唯一奇怪的是当我调用
SELECT SERVERPROPERTY('Collation')数据库返回Cyrillic_General_CI_AS -
数据库是远程的,我无法联系到管理员。所以我必须自己找出主要的麻烦在哪里。我也无法更改它的属性和其中的任何配置。仅来自我的 rhel6 linux 服务器。
标签: php sql-server pdo encoding