异常的PHP5.4字符集

异常的PHP5.4字符集,php,php-5.4,Php,Php 5.4,在PHP5.4中,我的代码不能正常工作。我用西里尔字母。简言之: 抛出新异常('ССббббббб'); 将输出: 致命错误:在test.php中 尽管结果是: 致命错误:未捕获的异常“exception”与消息 如果我不使用西里尔字母,结果是可以的。此外,如果我在5.3中运行这段代码,我将得到正确的结果。即。如果我使用西里尔字母,结果消息是空字符串。在异常中报告了非utf-8字符的问题。尝试将消息转换为utf-8,如下所示: throw new Exception(utf8_encode('

在PHP5.4中,我的代码不能正常工作。我用西里尔字母。简言之:

抛出新异常('ССббббббб');
将输出:

致命错误:在test.php中

尽管结果是:

致命错误:未捕获的异常“exception”与消息


如果我不使用西里尔字母,结果是可以的。此外,如果我在5.3中运行这段代码,我将得到正确的结果。即。如果我使用西里尔字母,结果消息是空字符串。

在异常中报告了非utf-8字符的问题。尝试将消息转换为utf-8,如下所示:

throw new Exception(utf8_encode('Сообщение'));
如果不起作用,请尝试以下操作:

$message = 'Сообщение';
$message = mb_convert_encoding($message, 'Windows-1251', 'UTF-8');
throw new Exception($message);
--编辑--

实际问题不是没有存储异常消息,而是异常没有正确显示。在PHP5.3中,xdebug在默认情况下是不启用的,而在PHP5.4中是启用的。xdebug被设置为以UTF-8显示所有内容,并且您的消息可能被编码在其他字符集中,因此消息无法正确呈现

如果你滚动到页面底部,你会发现一条关于这个问题的评论

PHP自己也跟踪了这个问题

也与同一问题有关


您可以通过将xdebug编码设置为非utf-8字符集来摆脱此问题。请

重点是我已经有一个大项目,所以不幸的是,它不是我的解决方案。也许我正在寻找一个能让我的代码正常工作的设置。请你给我一个链接到这些问题好吗?用一些参考和更好的解释编辑了答案Killneel,谢谢!但这是否意味着如果我不使用xdebug,我应该将其添加到php中,并将其配置为默认使用西里尔字母字符集?我已经编辑了答案,以反映OP指定的字符集。此外,我的答案还包括字符集转换以外的内容。请在投票前阅读全文。