From owner-freebsd-java@FreeBSD.ORG Tue Nov 4 14:37:49 2003 Return-Path: Delivered-To: freebsd-java@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2CA8116A4CE for ; Tue, 4 Nov 2003 14:37:49 -0800 (PST) Received: from server.lab.cyberlifelabs.com (adsl-64-142-24-131.sonic.net [64.142.24.131]) by mx1.FreeBSD.org (Postfix) with ESMTP id 652E743F93 for ; Tue, 4 Nov 2003 14:37:46 -0800 (PST) (envelope-from milo@cyberlifelabs.com) Received: from cyberlifelabs.com (beastie.lab.cyberlifelabs.com [192.168.1.3]) hA4Mba8m083648 for ; Tue, 4 Nov 2003 14:37:36 -0800 (PST) (envelope-from milo@cyberlifelabs.com) Message-ID: <3FA82A39.5060500@cyberlifelabs.com> Date: Tue, 04 Nov 2003 14:37:45 -0800 From: Milo Hyson User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.4) Gecko/20030924 X-Accept-Language: en-us, en MIME-Version: 1.0 To: FreeBSD Java Mailing List Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Odd String behavior X-BeenThere: freebsd-java@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting Java to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Nov 2003 22:37:49 -0000 For some reason, the following code fragment performs differently on two different machines: int length = (int)htmlFile.length(); byte bytes[] = new byte[length]; logger.info("length = " + length); InputStream in = new FileInputStream(htmlFile); for (int offset=0; length>0; ) { int numRead = in.read(bytes, offset, length); logger.info("numRead = " + numRead); if (numRead == -1) break; offset += numRead; length -= numRead; } in.close(); String rawHTML = new String(bytes, "UTF-8"); logger.info("rawHTML = " + rawHTML.length() + " characters"); On 4.9-RELEASE with native JDK 1.4.1-p3, I get the following correct output: 30799 [main] INFO com.internetdentalalliance.doorway.builder.TemplateFactory - length = 18936 30799 [main] INFO com.internetdentalalliance.doorway.builder.TemplateFactory - numRead = 18936 30806 [main] INFO com.internetdentalalliance.doorway.builder.TemplateFactory - rawHTML = 18936 characters However, on 4.5-RELEASE with native JDK 1.3.1-p7, I get the following erroneous output: 3046 [main] INFO com.internetdentalalliance.doorway.builder.TemplateFactory - length = 18936 3046 [main] INFO com.internetdentalalliance.doorway.builder.TemplateFactory - numRead = 18936 3052 [main] INFO com.internetdentalalliance.doorway.builder.TemplateFactory - rawHTML = 11419 characters It's losing 40% of the characters when converting the raw bytes to a String. Any ideas? -- Milo Hyson Chief "Mad" Scientist and Director of Asian Operations CyberLife Labs, LLC