CharToByteUTF8.java loses some characters

kaffe@rufus.w3.org kaffe@rufus.w3.org
Fri, 3 Mar 2000 20:03:21 +0900 (JST)


In message "Re: java.io.OutputStreamWriter: too small buffer"
    on 00/03/02, ito@htk.hitachi-cable.co.jp <ito@htk.hitachi-cable.co.jp> writes:

> In message "Re: java.io.OutputStreamWriter: too small buffer"
>     on 00/03/01, "Edouard G. Parmelan" <Edouard.Parmelan@quadratec.fr> writes:
> 
> > Could you try the following more general patch ?
> 
> This patch worked fine. Tank you.

I am afraid that patch is not enough to make CharToByteUTF8.java
work fine.

Please see the attached files.

When I run 

   $ java Test test05in test05out

I expect that 512 characters should be written to test05out.
But test05out has only 341 Japanese characters (1023 bytes). 

   $ ls -al test05in test05out
   -rw-rw-r--   1 ito      ito            13 Mar  3 19:13 test05in
   -rw-rw-r--   1 ito      ito          1023 Mar  3 19:44 test05out

Attached files are here.

$ cat Test.java
import java.io.*;
public class Test {
    public static void main(String[] args) {
        try {
            char[] cbuf = new char[512];
            InputStreamReader in
                = new InputStreamReader(new FileInputStream(args[0]),"UTF8");
            OutputStreamWriter out
                = new OutputStreamWriter(new FileOutputStream(args[1]), "UTF8");
            int l = in.read(cbuf,0,cbuf.length);
            if (l > 0) {
               l--;  // chop off the line feed
               System.err.println(l + " characters");
               int i = 0;
               int j = l;
               while(j < cbuf.length) {
                  cbuf[j++] = cbuf[i++];
               }
            }
            out.write(cbuf,0,cbuf.length);
            in.close();
            out.close();
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
    }
}
$ mmencode -b < test05in
5LyK6Jek5LiA5YWJCg==
$ mmencode -b < test05out
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek
5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ
5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK6Jek5LiA5YWJ5LyK
$