我已禁用本地MySQL服务器并查看相应的PDO异常。问题是消息中的所有西里尔符号都被破坏了(消息文本和路径中的cyryllic符号):
PDOException:SQLSTATE [HY000] [2002]������������������������,�.�。 ������������������������������������������。在D:\������\ domains \ time.local \ vendor \ time \ DB.php:25堆栈跟踪:#0 ...
我发现这个文本实际上是windows-1251格式(当我在浏览器中手动切换时显示正常文本)。但我到处都有utf-8:在Apache我有:
AddDefaultCharset utf-8
(Apache发送正确的字符集标题)
所有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 / PHP 7.0.3 / Windows 10
P上。 S.我的异常处理程序非常简单:
set_exception_handler(function (\Throwable $th) {
echo $th;
});
答案 0 :(得分:1)
尝试执行查询" SET NAMES utf8"连接到数据库后,也许有帮助。