The following test program gives different results with gcj and Sun JDK: // A.java import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder;
public class A { public static void main(String[] args) throws java.io.IOException { CharsetEncoder enc = Charset.forName("US-ASCII").newEncoder(); System.out.println(enc.canEncode('\u00e4')); } } // end $ javac A.java $ /usr/lib/jvm/java-1.5.0-sun/bin/java A false $ /usr/lib/jvm/java-gcj/bin/java A true The Sun version seems to return something like (c > 31 && c < 127), which makes sense, whereas gcj apparently always returns true. This breaks lots of code, such as Apache JaxMe 2 version 0.51 (specifically the MarshallerTest in the test suite, which generated invalid XML with gcj). This was tested on Debian (testing, i386). ~$ gcj --version gcj (GCC) 4.1.2 20060901 (prerelease) (Debian 4.1.1-13) The bug was also reported to Debian's bug tracking system: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=388596 -- Summary: CharsetEncoder.canEncode() gives different results than Sun version Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: marcus at better dot se GCC host triplet: i486-linux-gnu GCC target triplet: i486-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29178