Bug #61362 [Opn]: Exception::getTraceAsString, Exception::__toString not able to handle unicode
| From: | tony2001@php.net | Date: | Wed, 14 Mar 2012 17:20:50 +0000 |
| Subject: | Bug #61362 [Opn]: Exception::getTraceAsString, Exception::__toString not able to handle unicode | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-168461@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=61362&edit=1
ID: 61362
Updated by: tony2001@php.net
Reported by: sam at rmcreative dot ru
Summary: Exception::getTraceAsString, Exception::__toString
not able to handle unicode
Status: Open
Type: Bug
Package: Unicode Engine related
Operating System: All
PHP Version: 5.4.0
Block user comment: N
Private report: N
New Comment:
The problem is here: http://lxr.php.net/opengrok/xref/PHP_5_4/Zend/zend_exceptions.c#391
Dunno what to do in this case: either add to the docs that the result of getTraceAsString() is
perfectly safe from binary symbols or drop that code completely and allow any chars there.
Previous Comments:
------------------------------------------------------------------------
[2012-03-14 15:16:42] sam at rmcreative dot ru
It's UTF8 already.
------------------------------------------------------------------------
[2012-03-14 15:14:58] tony2001@php.net
Nevermind, I see the problem.
------------------------------------------------------------------------
[2012-03-14 12:20:41] tony2001@php.net
What if you try to switch your browser encoding to UTF8 from whatever it is by default?
------------------------------------------------------------------------
[2012-03-12 15:44:18] sam at rmcreative dot ru
Description:
------------
Exception::getTraceAsString, Exception::__toString are not able to properly handle unicode in stack
trace. Instead of showing actual argument values it's giving ???? in case value is unicode.
Tested on PHP 5.3 and PHP 5.4.
Test script:
---------------
<?php
function test($arg){
throw new Exception();
}
try {
test('ÑеÑÑ');
}
catch(Exception $e) {
echo $e->getTraceAsString();
echo (string)$e;
}
Expected result:
----------------
d:\web\usr\local\php54>php.exe d:\src\exception_wrong_trace\test.php
#0 D:\src\exception_wrong_trace\test.php(7): test('ÑеÑÑ')
#1 {main}exception 'Exception' in D:\src\exception_wrong_trace\test.php:3
Stack trace:
#0 D:\src\exception_wrong_trace\test.php(7): test('ÑеÑÑ')
#1 {main}
Actual result:
--------------
d:\web\usr\local\php54>php.exe d:\src\exception_wrong_trace\test.php
#0 D:\src\exception_wrong_trace\test.php(7): test('????')
#1 {main}exception 'Exception' in D:\src\exception_wrong_trace\test.php:3
Stack trace:
#0 D:\src\exception_wrong_trace\test.php(7): test('????')
#1 {main}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=61362&edit=1