[kaffe] jar fails to open file with UTF-8 name

Marko Kreen marko at l-t.ee
Tue Jan 18 01:13:24 PST 2005


On Sun, Jan 16, 2005 at 05:32:35PM +0200, Kalle Olavi Niemitalo wrote:
> The jar program installed with Kaffe fails to open a file whose
> name contains non-ASCII characters encoded in UTF-8.  This occurs
> in both fi_FI.UTF-8 and C locales.  Please see the attached ZIP
> for details.  All the files generated by running test.sh are
> included, so you can compare them with what you get.
> 
> The bug occurred on an i386 compatible system running Debian
> GNU/Linux with packages mostly from the unstable distribution,
> including kaffe 1.1.4.PRECVS6-1 and libc6 2.3.2.ds1-16.

I strace'd the jar process, seems like it tries to open the file
using UTF16 encoding, instead of UTF8.

Also I made a simpler testcase:
-----------------------
import java.io.*;
public class UTF8Open {
    public static void main(String [] args) {
        String fn = "Tekstikäyttöliittymä.class";
        try {
            FileInputStream in = new FileInputStream(fn);
        } catch (Exception ex) { ex.printStackTrace(); }
    }
}
-----------------------

Filename encoding should be get from LANG/LC_* environment
variables.  Seems like kaffe/classpath ignore those ATM.


Looking more into it, problematic spot is in Classpath's
Java_gnu_java_nio_channels_FileChannelImpl_open(), which uses
JCL_jstring_to_cstring for filename conversion.  There should
be something locale-aware.


All this is only for open(), there is also directory read
which I havent looked and zipfile i/o, which seems to force
UTF-8 so it may be ok.

-- 
marko





More information about the kaffe mailing list