ID:               31314
 User updated by:  yury at gorodok dot net
 Reported By:      yury at gorodok dot net
-Status:           Feedback
+Status:           Open
 Bug Type:         ICONV related
 Operating System: Windows
 PHP Version:      5.0.2
 New Comment:

Here is the full script:
(the files on which I've experienced the bug, I've pointed earlier)

<?php //        UTF->WIN
  if ( count($argv)< 2)
   {
    echo "\n2 arguments needed!\n";
    exit;
   }
 $fns=$argv[1];
 $fnts=$argv[2];

 $f=fopen($fns, "rb");
 $ff=fopen($fnts, "wb");
 $flen=filesize($fns);
 $fstr=fread($f, $flen);
  echo $flen."\n";
 $ffstr=iconv("UTF-8","windows-1251",$fstr);
  echo strlen($ffstr)."\n";
  echo fwrite($ff,$ffstr/*,strlen($ffstr)*/)."\n";
  fclose($ff);
  fclose($f);
?>


Previous Comments:
------------------------------------------------------------------------

[2004-12-28 22:07:59] [EMAIL PROTECTED]

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc.

If possible, make the script source available online and provide
an URL to it here. Try avoid embedding huge scripts into the report.



------------------------------------------------------------------------

[2004-12-28 16:17:20] yury at gorodok dot net

Just not using third parameter in fwrite() _doesn't_help_ a bit! All
lines with mbstring were (and are) commented out; I cann't see it in my
phpinfo()-- so, I cann't say what value mbstring.func_overload has.
 Here is the code, that doesn't work now:

 $f=fopen($fns, "rb");
 $ff=fopen($fnts, "wb");
 $flen=filesize($fns);
 $fstr=fread($f, $flen);
  echo $flen."\n";
 $ffstr=iconv("UTF-8","windows-1251",$fstr);
  echo strlen($ffstr)."\n";
  echo fwrite($ff,$ffstr/*,strlen($ffstr)*/)."\n";
  fclose($ff);
  fclose($f);

Also, for some other files (that translated good), there was no problem
with length.

------------------------------------------------------------------------

[2004-12-27 19:40:02] [EMAIL PROTECTED]

You have mbstring.func_overload turned On, thus strlen() returns number
of characters, not bytes.
Turn it off or just don't use third parameter of fwrite().

------------------------------------------------------------------------

[2004-12-27 18:24:32] yury at gorodok dot net

Description:
------------
The code must translate UTF-8 to windows-1251,
but it truncates output!
May be old compiled in version of libiconv?

examples follow:
 UTF-8:
  http://yury.gorodok.net/temp/test_.html
 result:
  http://yury.gorodok.net/temp/test_1.html

(the content is not essential, I suppose)

Reproduce code:
---------------
 $fstr=fread($f, $flen);
 $ffstr=iconv( "windows-1251", "UTF-8",$fstr);
  echo fwrite($ff,$ffstr, strlen($ffstr))."\n";




------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31314&edit=1

Reply via email to