php 5.4 charset for Exception

时间:2014-10-27 12:23:23

标签: php php-5.4

在php 5.4中,我的代码无法正常工作。我用西里尔字母。简而言之:

throw new Exception('Сообщение');

将输出:

  

致命错误:在test.php中......

虽然结果如下:

  

致命错误:未捕获的异常'异常'有消息......

如果我不使用西里尔字符,结果是好的。而且,如果我在5.3中运行此代码,我将得到正确的结果。 I. e。如果我使用西里尔语,结果消息是空字符串。

1 个答案:

答案 0 :(得分:0)

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

throw new Exception(utf8_encode('Сообщение'));

如果不起作用,请尝试以下方法:

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

- 编辑 -

实际问题不是没有存储异常消息,而是 - 异常未正确显示。在PHP 5.3中,xdebug默认情况下没有打开,在PHP 5.4中,它是。 xdebug设置为以UTF-8显示所有内容,并且您的消息可能在某些其他字符集中编码,因此消息无法正确呈现。

如果您滚动到this页面的底部,您会找到一条引用此问题的评论。

PHP自己在here

上跟踪了这个问题

This stackoverflow thread也与同一问题有关。

您可以通过将xdebug编码设置为非utf-8字符集来逃脱。请read the xdebug manual regarding this