src/share/classes/sun/nio/cs/ext/IBM942C.java

Print this page

        

*** 21,44 **** * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ - /* - */ - package sun.nio.cs.ext; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; ! import java.nio.charset.CharacterCodingException; import sun.nio.cs.HistoricallyNamedCharset; public class IBM942C extends Charset implements HistoricallyNamedCharset { - public IBM942C() { super("x-IBM942C", ExtendedCharsets.aliasesFor("x-IBM942C")); } public String historicalName() { --- 21,41 ---- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ package sun.nio.cs.ext; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; ! import java.util.Arrays; import sun.nio.cs.HistoricallyNamedCharset; + import static sun.nio.cs.CharsetMapping.*; public class IBM942C extends Charset implements HistoricallyNamedCharset { public IBM942C() { super("x-IBM942C", ExtendedCharsets.aliasesFor("x-IBM942C")); } public String historicalName() {
*** 49,101 **** return ((cs.name().equals("US-ASCII")) || (cs instanceof IBM942C)); } public CharsetDecoder newDecoder() { ! return new Decoder(this); } public CharsetEncoder newEncoder() { ! return new Encoder(this); } ! private static class Decoder extends IBM942.Decoder { ! protected static final String singleByteToChar; static { ! String indexs = ""; ! for (char c = '\0'; c < '\u0080'; ++c) indexs += c; ! singleByteToChar = indexs + ! IBM942.Decoder.singleByteToChar.substring(indexs.length()); ! } ! public Decoder(Charset cs) { ! super(cs, singleByteToChar); ! } ! } ! private static class Encoder extends IBM942.Encoder { ! protected static final short index1[]; ! protected static final String index2a; ! protected static final int shift = 5; ! ! static { ! ! String indexs = ""; ! for (char c = '\0'; c < '\u0080'; ++c) indexs += c; ! index2a = IBM942.Encoder.index2a + indexs; ! ! int o = IBM942.Encoder.index2a.length() + 15000; ! index1 = new short[IBM942.Encoder.index1.length]; ! System.arraycopy(IBM942.Encoder.index1, 0, index1, 0, IBM942.Encoder.index1.length); ! ! for (int i = 0; i * (1<<shift) < 128; ++i) { ! index1[i] = (short)(o + i * (1<<shift)); } - } - - public Encoder(Charset cs) { - super(cs, index1, index2a); - } - } } --- 46,92 ---- return ((cs.name().equals("US-ASCII")) || (cs instanceof IBM942C)); } public CharsetDecoder newDecoder() { ! return new DoubleByte.Decoder(this, ! IBM942.b2c, ! b2cSB, ! 0x40, ! 0xfc); } public CharsetEncoder newEncoder() { ! return new DoubleByte.Encoder(this, c2b, c2bIndex); } ! final static char[] b2cSB; ! final static char[] c2b; ! final static char[] c2bIndex; static { ! IBM942.initb2c(); ! // the mappings need udpate are ! // u+001a <-> 0x1a ! // u+001c <-> 0x1c ! // u+005c <-> 0x5c ! // u+007e <-> 0x7e ! // u+007f <-> 0x7f ! b2cSB = Arrays.copyOf(IBM942.b2cSB, IBM942.b2cSB.length); ! b2cSB[0x1a] = 0x1a; ! b2cSB[0x1c] = 0x1c; ! b2cSB[0x5c] = 0x5c; ! b2cSB[0x7e] = 0x7e; ! b2cSB[0x7f] = 0x7f; ! IBM942.initc2b(); ! c2b = Arrays.copyOf(IBM942.c2b, IBM942.c2b.length); ! c2bIndex = Arrays.copyOf(IBM942.c2bIndex, IBM942.c2bIndex.length); ! c2b[c2bIndex[0] + 0x1a] = 0x1a; ! c2b[c2bIndex[0] + 0x1c] = 0x1c; ! c2b[c2bIndex[0] + 0x5c] = 0x5c; ! c2b[c2bIndex[0] + 0x7e] = 0x7e; ! c2b[c2bIndex[0] + 0x7f] = 0x7f; } }