On Sun, May 3, 2009 at 10:29 AM, Oliver Deakin <[email protected]> wrote: > Ah right - yes maybe the comment should have read "_into_ UTF-8". I had the > assertTrue() just below my change in mind when I wrote it: > > assertTrue("read returned incorrect char", c == fileString.charAt(0)); > > I believe the fileString.charAt(0) will return a UTF-8 encoded character > here, and the InputStreamReader is also doing a conversion from the platform > default encoding into UTF-8, then the assert is carrying out a straight
A Java char isn't a UTF-8 value, it's a UTF-16 value, at least as of Java 5 [1]. Prior to Java 5, a char was a Unicode code point. [1] http://java.sun.com/developer/technicalArticles/Intl/Supplementary/ > value comparison between the two characters. It was the conversion from the > platform default encoding that I was referring to. Hope that's made it > clearer. > > Regards, > Oliver > > > Nathan Beyer wrote: >> >> I'm still missing it - what does this have to do with UTF-8? >> >> fileString.getBytes() will return a byte[] encoded using the platform >> default >> >> new InputStreamReader(new FileInputStream(fileName)) will open a file >> and read the bytes using the platform default >> >> I see that there's now symmetry, but it's not about UTF-8. On Windows, >> all of this is happening with Windows-1252. >> >> I'm just confused about the comment - I don't disagree with the code >> change. >> >> -Nathan >> >> On Fri, May 1, 2009 at 3:33 AM, Oliver Deakin >> <[email protected]> wrote: >> >>> >>> In the Setup() method we write to the stream using >>> >>> fos.write(fileString.getBytes()); >>> >>> but getBytes() converts the string into the native encoding for the >>> platform, so when we read the data back in we want to convert it back >>> from >>> the native encoding before we try to do any comparison with UTF-8 chars. >>> >>> Regards, >>> Oliver >>> >>> Nathan Beyer wrote: >>> >>>> >>>> I'm curious about this change. There's no declaration of UTF-8 as the >>>> encoding, how is that getting set? AIUI the InputStreamReader will use >>>> the default encoding of the operating system. >>>> >>>> -Nathan >>>> >>>> On Thu, Apr 30, 2009 at 10:54 AM, <[email protected]> wrote: >>>> >>>> >>>>> >>>>> Author: odeakin >>>>> Date: Thu Apr 30 15:54:29 2009 >>>>> New Revision: 770302 >>>>> >>>>> URL: http://svn.apache.org/viewvc?rev=770302&view=rev >>>>> Log: >>>>> Minor change to ensure we read test data back in UTF-8. >>>>> >>>>> Modified: >>>>> >>>>> >>>>> harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/FileInputStreamTest.java >>>>> >>>>> Modified: >>>>> >>>>> harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/FileInputStreamTest.java >>>>> URL: >>>>> >>>>> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/FileInputStreamTest.java?rev=770302&r1=770301&r2=770302&view=diff >>>>> >>>>> >>>>> ============================================================================== >>>>> --- >>>>> >>>>> harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/FileInputStreamTest.java >>>>> (original) >>>>> +++ >>>>> >>>>> harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/FileInputStreamTest.java >>>>> Thu Apr 30 15:54:29 2009 >>>>> @@ -19,6 +19,7 @@ >>>>> >>>>> import java.io.File; >>>>> import java.io.FileInputStream; >>>>> +import java.io.InputStreamReader; >>>>> import java.io.FileOutputStream; >>>>> import java.io.FilePermission; >>>>> import java.io.IOException; >>>>> @@ -109,9 +110,9 @@ >>>>> * @tests java.io.FileInputStream#read() >>>>> */ >>>>> public void test_read() throws IOException { >>>>> - is = new FileInputStream(fileName); >>>>> - int c = is.read(); >>>>> - is.close(); >>>>> + InputStreamReader isr = new InputStreamReader(new >>>>> FileInputStream(fileName)); >>>>> + int c = isr.read(); >>>>> + isr.close(); >>>>> assertTrue("read returned incorrect char", c == >>>>> fileString.charAt(0)); >>>>> } >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> >>> -- >>> Oliver Deakin >>> Unless stated otherwise above: >>> IBM United Kingdom Limited - Registered in England and Wales with number >>> 741598. Registered office: PO Box 41, North Harbour, Portsmouth, >>> Hampshire >>> PO6 3AU >>> >>> >>> >> >> > > -- > Oliver Deakin > Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire > PO6 3AU > >
