2016-02-28 53 views
0

我已禁用本地MySQL服务器并查看相应的PDO异常。的问题是,在该消息中的所有西里尔符号被断开(消息文本和cyryllic符号路径):为什么在windows-1251中抛出异常?

PDOException:SQLSTATE [HY000] [2002] , . 。 。在d:\ \域\ time.local \供应商\时间\ db.php中:25堆栈跟踪:#0 ...

我发现了该文本实际上是windows-1251格式(当我在浏览器中手动切换时显示正常文本)。但我有UTF-8集无处不在:阿帕奇我有:

AddDefaultCharset UTF-8

(阿帕奇发出正确的字符集头)

所有的PHP文件采用UTF-8无BOM。在php.ini中我有:

default_charset = "UTF-8" 

internal_encoding = "UTF-8" 

input_encoding = "UTF-8" 

output_encoding = "UTF-8" 

那么为什么它仍然使用windows-1251呢?以及如何将这些消息切换到utf-8?

我也看到,致命的错误和其他也使用Windows-1251。为什么?

的Apache 2.4/7.0.3 PHP/Windows的10

P. S.我的异常处理程序很简单:

set_exception_handler(function (\Throwable $th) { 
    echo $th; 
}); 
+0

请参阅:http://stackoverflow.com/questions/279170/utf-8-all-the-way-through –

回答

1

尝试连接到数据库后执行查询 “SET NAMES UTF8”,也许会有所帮助。

相关问题