/* * @(#)SurrogateTest.java 1.7 06/10/10 * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. * */ import sun.io.*; public class SurrogateTest{ CharToByteISO8859_1 converter = null; byte byteArr[] = new byte[10]; char charArr[] = {'a', 'b', 'c', 'd', 'e', '\uD800', '\uDC00', 'f', 'g', 'h'}; public static void main(String args[]) { new SurrogateTest().run(); } public void run() { int len = 0; try { converter = (CharToByteISO8859_1)CharToByteConverter.getConverter("8859_1"); } catch (Exception e) { System.out.println(e.toString()); } // Convert from 'a' to '\uD800' (high surrogate). doConvert(1, 0, 6, 0, 10); // Convert from '\uDC00' (low surrogate) to 'h'. // This is a legal UTF16 sequence. doConvert(2, converter.nextCharIndex(), 10, converter.nextByteIndex(), 10); byteArr = new byte[10]; doConvert(3, 0, 10, 0, 10); } void doConvert(int i, int inOff, int inEnd, int outOff, int outEnd) { int len=0; System.out.println("Case "+i+": inOff="+inOff+", inEnd="+inEnd+ ", outOff="+outOff+", outEnd="+outEnd); try { len = converter.convert(charArr, inOff, inEnd, byteArr, outOff, outEnd); } catch (Exception e) { System.out.println(e.toString()); } finally { for (int j=0; j<10; j++) { System.out.println("byteArr["+j+"] = "+byteArr[j]); } System.out.println("Length of conversion from char to byte = " + len+"\n"); } } }