ID: 47164 Comment by: lunter at interia dot pl Reported By: lunter at interia dot pl Status: Open Bug Type: Unicode Engine related Operating System: all PHP Version: 6CVS-2009-01-20 (snap) New Comment:
johan...@php.net "(binary)chr($c) will give the wrong result" hmmmmmmm....... try code above. b1.dat consists utf-8 data b2.dat consists binary chars 0 - 255 step 1, file length is correct - 256B & chars are correct... <? if(substr(phpversion(),0,1)!='6'){trigger_error('only PHP 6',E_USER_ERROR);} // 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 $b1=(binary)''; for($z=0;$z<256;$z++){$b1.=chr($z);} file_put_contents('b1.dat',$b1); $b2=(binary)''; for($z=0;$z<256;$z++){$b2.=(binary)chr($z);} file_put_contents('b2.dat',$b2); ?> Previous Comments: ------------------------------------------------------------------------ [2009-01-21 11:26:24] johan...@php.net $b = sprintf("%c%c%c", 255, 254, 253); should work, but having a simple function might still be helpful ------------------------------------------------------------------------ [2009-01-21 11:12:52] johan...@php.net Actually we need a function doing "binary chr" - chr() in PHP 6 takes a codepoint not the byte value, so (binary)chr($c) will give the wrong result. ------------------------------------------------------------------------ [2009-01-20 10:59:03] lunter at interia dot pl Description: ------------ uncomfortable (binary)char() append to a binary string Reproduce code: --------------- $b=(binary)''; $b.=chr(255); $b.=chr(254); $b.=chr(253); $b.=chr(252); $b.=chr(251); ... $b.=chr(0); Expected result: ---------------- detect $b type as binary string and adding chr() in binary mode like this: $b=(binary)''; $b.=(binary)chr(255); $b.=(binary)chr(254); $b.=(binary)chr(253); $b.=(binary)chr(252); $b.=(binary)chr(251); ... $b.=(binary)chr(0); Actual result: -------------- adding chr() in unicode ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47164&edit=1