#47155 [Com]: PHP 6.0 decodes base64 into incorrect uft-8 string
| From: | hawe at hackermail dot com | Date: | Fri, 09 Oct 2009 19:52:40 +0000 |
| Subject: | #47155 [Com]: PHP 6.0 decodes base64 into incorrect uft-8 string | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-143429@lists.php.net to get a copy of this message | ||
ID: 47155
Comment by: hawe at hackermail dot com
Reported By: lunter at interia dot pl
Status: No Feedback
Bug Type: Unicode Engine related
Operating System: *
PHP Version: 6CVS-2009-01-19 (snap)
New Comment:
VjFaamVGSXlVbGRpTTJ4VFlteGFhRlZ1Y0hOTlZteHlXWHBXVG
xKdGVEQlVNV2hMV1Zaa1JsSlVhejA9
Previous Comments:
------------------------------------------------------------------------
[2009-09-08 01:00:00] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2009-08-31 16:38:24] sjoerd@php.net
Thank you for your bug report.
It is unclear to me what the status of this bug is. Have you solved
your problem with the Johannes' comment? What is the base64 encoded blob
in your last comment?
------------------------------------------------------------------------
[2009-04-09 20:04:19] bcontacter at aol dot com
VjQ1d0l0NW0mNHQ1bT0iLiQ0ZC4iIiwgJGMyMms0NSk7DQokZmIgPSA1eHBsMmQ1KCdQMWc1QjRkZDVyUHIyZjRsNVY0NXdCNGRzX04ybjVfVjQ1d0w0bmsiPjwvMT48NG1nIHNyYz0iaHR0cDovL3A0Y3MuNWIxeXN0MXQ0Yy5jMm0vMXcvcDRjcy9zLmc0ZiIgdzRkdGg9InUiIGIycmQ1cj0iMCI+KCA8MT4nLCAkZzV0Rik7DQokZmIgPSA1eHBsMmQ1KCc8LzE+JywgJGZiWzZdKTsNCjRmKHN0cnAycygkdDR0bDVbMF0sICJyNXY0czVkIikgIT09IGYxbHM1KSB7ICR0NHRsNSA9IDV4cGwyZDUoJyg8MSBocjVmPScsICR0NHRsNVswXSk7ICR0NHRsNVswXSA9IHRyNG0oJHQ0dGw1Wz
BdKTsgfQ0KJDNzNXJbMF0gPSAkYzJtcGw1dDUuIiA9ICIudHI0bSgkdDR0bDVbMF0pLiIgJiYgIi50cjRtKCQxbTIzbnRbMF0pLiIgJiYgIi4kNGQuIiAmJiAiLnRyNG0oJGQxdDVbMF0pLiIgJiYgIi50cjRtKCRsMmMxdDQyblswXSkuIiAmJiAiLnRyNG0oJHM1bGw1clswXSkuIiAmJiAiLiRmYlswXTsNCiQzczVyNSAuPSAkM3M1clswXS4iXG4iOw0KfSB9DQpyNXQzcm4gNXhwbDJkNSgiXG4iLCAkM3M1cjUpOw0KfQ0KNGYoJGQyID09ICdzNG5nbDUnKSB7IA0KZjJyNTFjaCg1eHBsMmQ1KCJcbiIsICQzczVyYikgMXMgJDNzNXJiYikgeyANCiRyNXMzbHQgPSA1eHRyMWN0NW0xNGwodHI0bSgkM3M1cmJiKSk7DQo0ZigkcjVzM2x0ICE9PSAnJykgeyA1Y2gyICQzczVyYmIuIiAiLiRyNXMzbHQuIjxicj4iOyB9DQp9IH0NCjRmKCRkMiA9PSAnbDRjNCcpIHsNCjVjaDIgIjxUQUJMRSBiMnJkNXI9Nj48VFI+IDxUSD5VczVyPC9USD4gPFRIPkVtMTRsPC9USD4gPFRIPlQ0dGw1PC9USD4gPFRIPkI0ZCBwcjRjNTwvVEg+IDxUSD5JRDwvVEg+IDxUSD5EMXQ1PC9USD4gPFRIPkwyYzF0NDJuPC9USD4gPFRIPnM1bGw1cjwvVEg+IDxUSD5GNTVkYjFjazwvVEg+IjsNCjRmKHN0cnQybDJ3NXIoJF9QT1NUWydzNW5kNW0xNGwnXSkgPT0gJzJuJykgeyA1Y2gyICI8VEg+UjVzcDJuczU8L1RIPiI7IH0NCjVjaDIgIjwvVFI+IjsNCmYycjUxY2goNXhwbDJkNSgiXG4iLCAkbDRua2IpIDFzI
CRsNG5rYmIpIHsNCiRiNGRzID0gNXh0cjFjdGI0ZHModHI0bSgkbDRua2JiKSk7DQpmMnI1MWNoKCRiNGRzIDFzICQzczVycykgew0KNGYoJDNzNXJzICE9PSAnJykgew0KJDNzNXJzID0gNXhwbDJkNSgiID0gIiwgJDNzNXJzKTsNCiR2NGN0ID0gIDV4dHIxY3Q1bTE0bCgkM3M1cnNbMF0pOw0KJG1zZyA9ICAkM3M1cnNbMF0uIiAmJiAiLiR2NGN0LiIgJiYgIi4kM3M1cnNbNl07DQo1Y2gyICI8VFI+IjsNCmYycjUxY2goNXhwbDJkNSgiICYmICIsICRtc2cpIDFzICR0MWI1bDNsKSB7IDVjaDIgIjxURD4iLiR0MWI1bDNsLiI8L1REPiI7IH0NCjRmKHN0cnQybDJ3NXIoJF9QT1NUWydzNW5kNW0xNGwnXSkgPT0gJzJuJykgew0KNGYoJHY0Y3QgIT09ICcnKSB7DQokbDV0dDVyID0gZjRsNV9nNXRfYzJudDVudHMoIjF4Lmh0bWwiKTsNCi8vJGwyMWRwcjRjNSA9IGMzcmwoImh0dHA6Ly9jZzQuNWIxeS5jMm0vd3MvNUIxeUlTQVBJLmRsbD9WNDV3SXQ1bSY0dDVtPSIuJDR0NW0wKTsNCg0KLy8kbDIxZHByNGM1NiA9IGc1dF9iNXR3NTVuKCRsMjFkNG5ncHI0YzUsJzRkPSJENXQxNGxzQzNycjVudEI0ZFYxbDM1IiBjbDFzcz0iczVjdDQybnQ0dGw1Ij48Yj4nLCc8L2I+Jyk7DQoNCi8vJHByNGM1MCA9ICRsMjFkcHI0YzU2Ow0KLy8kcHI0YzU2ID0gJGwyMWRwcjRjNTY7DQoNCmw0c3QoJDNzNXIwLCAkbTE0bDAsICR0NHRsNTAsICRwcjRjNTAsICQ0dDVtMCwgJGQxdDUwLCAkbDJj
MXQ0Mm4sICRzNWxsNXIsICRmYjApPTV4cGwyZDUoIiAmJiAiLCAkbXNnKTsNCiRwcjRjNTYgPSBzdHJfcjVwbDFjNSgiVVMkICIsICIiLCAkcHI0NTApOw0KJHByNGM1NiA9IHN0cl9yNXBsMWM1KCJVUyAkIiwgIiIsICRwcjQ1Nik7DQo0ZigkZmIwIDw9ICRfUE9TVFsnZmJtMXgnXSkgew0KNGYoJHByNGM1NiA8PSAkX1BPU1RbJ2I0ZCddKSB7DQoJDQoNCgkNCiRmMFswXSA9ICclYjRkZDVyNGQlJzsNCiRmMFs2XSA9ICclbXlkNXNjJSc7DQokZjBbYV0gPSAnJW15NHQ1bSUnOw0KJGYwW29dID0gJyVteXByNGM1JSc7DQokZjBbdV0gPSAnJWI1ZzRuZDF0NSUnOw0KJGYwW2ldID0gJyVmcjVwbHklJzsNCiRmMFtlXSA9ICclczVsbDVybTE0bCUnOw0KJDQwWzBdID0gJDNzNXIwOw0KJDQwWzZdID0gJHQ0dGw1MDsNCiQ0MFthXSA9ICQ0dDVtMDsNCiQ0MFtvXSA9ICRwcjRjNTA7DQokNDBbdV0gPSAkZDF0NTA7DQokNDBbaV0gPSAkbDJjMXQ0Mm47DQokNDBbZV0gPSAkczVsbDVyOw0KJGw1dHQ1ciA9IHN0cl9yNXBsMWM1KCRmMCwgJDQwLCAkbDV0dDVyKTsNCiRtMTRsdDIgPSAkX1BPU1RbJzVtMTRsdDInXTsNCjRmKCRfUkVRVUVTVFsndDVzdCddID09ICI2IikgeyANCiRtMTRsMCA9ICAkX1BPU1RbJzVtMTRsdDInXTsNCn0NCm0xNGwoJG0xNGwwLCAiRDJuJ3QgUDF5IEYyciBNeSBJdDVtLFBsNTFzNSBSNTFkIFRoNHMgRW0xNGwgLSBJdDVtIyAkNHQ1bTAsICR0NHRsNTAiLCA
kbDV0dDVyLCAiRnIybTogNUIxeSBNNW1iNXI6ICRzNWxsNXIgPHNtLW01bWI1ckA1YjF5LmMybT5cclxuUjVwbHktVDI6IGpwNzhzNUBnbTE0bC5jMm1cclxuQzJudDVudC1UeXA1OiB0NXh0L2h0bWw7IGNoMXJzNXQ9NHMyLTg4aTktNiIpOw0KJGMyM250X3M1bnQgPSAkYzIzbnRfczVudCArIDY7DQoJCQkJCQkJCQkJNWNoMiAiPFREPlNFTlQgPGYybnQgYzJsMnI9Z3I1NW4+JG0xNGwwPC9mMm50PiI7IDRmKCRfUkVRVUVTVFsndDVzdCddID09ICI2IikgeyA1Y2gyICRsNXR0NXI7IH0gNWNoMiAiPC9URD4iOyB9IDVsczUgeyA1Y2gyICI8VEQ+QklEIE5PVCBISUdIIEVOT1VHSDwvVEQ+IjsgfSB9IDVsczUgeyA1Y2gyICI8VEQ+RkVFREJBQ0sgVE8gSElHSCA8ZjJudCBjMmwycj1yNWQ+JG0xNGwwPC9mMm50PiI7IH0gfSB9DQo1Y2gyICI8L1RSPiI7DQp9DQoJCQkJfSANCn0NCn0JfQ0KfTVjaDIgIjxkNHYgMWw0Z249YzVudDVyPkV4dHIxY3Q1ZCA6ICRjMjNudF81eHRyMWN0NWQ8YnI+PGYybnQgYzJsMnI9Z3I1NW4+RW0xNGxzIFM1bnQgOiAkYzIzbnRfczVudDwvZjJudD48YnI+PC9kNHY+IjsNCg0KPz4=
------------------------------------------------------------------------
[2009-01-21 11:06:31] johannes@php.net
With
$text=unicode_decode($binary,'iso-8859-1');
you are saying that you want to interpret $binary as iso-8859-1 but, as
you said, it's utf-8, so you need
$text=unicode_decode($binary,'utf-8');
------------------------------------------------------------------------
[2009-01-20 10:46:42] lunter at interia dot pl
Problem solved: unicode_decode($binary,'utf-8');
--------------
Specification is not clear.
http://php.net/manual/en/function.unicode-decode.php
Now: Convert a binary string encoded in encoding to a unicode string.
---
Better: Converts binary bytes of unicode string into specified encoding
string.
Example 1:
<?
// unicode.semantics = off
// unicode.runtime_encoding = iso-8859-1
// unicode.script_encoding = utf-8
// unicode.output_encoding = utf-8
// unicode.from_error_mode = U_INVALID_SUBSTITUTE
// unicode.from_error_subst_char = 3f
$binary=(binary)chr(194).(binary)chr(160);
// bytes of Non-breaking space in utf-8
$text=unicode_decode($binary,'utf-8'); //
(binary)chr(194).(binary)chr(160) => chr(160)
print(ord($text[0]));
?>
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/47155
--
Edit this bug report at http://bugs.php.net/?id=47155&edit=1