【问题标题】:Why exceptions are thrown in windows-1251?为什么 windows-1251 会抛出异常?
【发布时间】:2016-06-11 08:11:54
【问题描述】:

我已禁用本地 MySQL 服务器并看到相应的 PDO 异常。问题是消息中的所有西里尔符号都被破坏(路径中的消息文本和西里尔符号):

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;
});

【问题讨论】:

标签: php utf-8


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2015-12-24
    相关资源
    最近更新 更多