【问题标题】:MsSQL + Apache + nginx encoding troubleMsSQL + Apache + nginx 编码麻烦
【发布时间】: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


【解决方案1】:

我曾经遇到过类似的问题。经过所有的研究,我得到了解决方案。检查您的 php 文件是否被编码为 UTF-8 without BOM。您必须将文件编码为 utf-8 而不使用 bom。

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 2013-02-01
    • 2011-06-13
    • 2011-12-27
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多