CharToByteCp949C.java revision 0
0N/A * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. Sun designates this 0N/A * particular file as subject to the "Classpath" exception as provided 0N/A * by Sun in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 0N/A * CA 95054 USA or visit www.sun.com if you need additional information or 0N/A * have any questions. 0N/A* @author Malcolm Ayres 0N/ACp949C is a hand-modified version of Cp949 0N/Amaps Unicode U-005C <-> 0x5C (local code page) 0N/A private static final char SBase =
'\uAC00';
0N/A private static final char LBase =
'\u1100';
0N/A private static final char VBase =
'\u1161';
0N/A private static final char TBase =
'\u11A7';
0N/A private static final byte G0 =
0;
0N/A private static final byte G1 =
1;
0N/A private static final byte G2 =
2;
0N/A private static final byte G3 =
3;
0N/A private char l, v, t;
0N/A * flush out any residual data and reset the buffer state 0N/A * Resets converter to its initial state. 0N/A * Returns true if the given character can be converted to the 0N/A * target character encoding. 0N/A // only return true if input char was unicode null - all others are 0N/A * Character conversion 0N/A // Is this a high surrogate? 0N/A // Is this the last character of the input? 0N/A // Is there a low surrogate following? 0N/A // We have a valid surrogate pair. Too bad we don't do 0N/A // surrogates. Is substitution enabled? 0N/A // We have a malformed surrogate pair 0N/A // Is this an unaccompanied low surrogate? 0N/A * returns the maximum number of bytes needed to convert a char 0N/A * Return the character set ID 0N/A * private function to add the bytes to the output buffer 0N/A // ensure sufficient space for the bytes(s) 0N/A // move the data into the buffer 0N/A * private function to add a unicode character to the output buffer 0N/A // first we convert the unicode to its byte representation 0N/A // if the unicode was not mappable - look for the substitution bytes 0N/A // now put the bytes in the buffer