if (b[cur] == 0x1b) { // ESC if (off < cur) { sb.append(codec[g].decode(b, off, cur - off)); codec[0] = Codec.JIS_X_212; } else { // decode invalid ESC sequence as chars sb.append(codec[0].decode(b, cur - 4, 4)); break; default: // decode invalid ESC sequence as chars sb.append(codec[0].decode(b, cur - 4, 4)); case 0x284a: codec[0] = Codec.JIS_X_201; if (codec[1].getEscSeq1() == 0) codec[1] = codec[0]; break; break; default: // decode invalid ESC sequence as chars sb.append(codec[0].decode(b, cur - 3, 3)); if (codec[0] != codec[1] && g == (b[cur] < 0 ? 0 : 1)) { if (off < cur) { sb.append(codec[g].decode(b, off, cur - off)); int bytesPerChar = codec[g].getBytesPerChar(); cur += bytesPerChar > 0 ? bytesPerChar : b[cur] < 0 ? 2 : 1;
return SpecificCharacterSet.DEFAULT.codecs[0]; switch(last2digits(code)) { case 0: if (code.equals("ISO_IR 100") || code.equals("ISO 2022 IR 100"))
private void encodeComponent(Encoder[] encs, CharBuffer cb, ByteBuffer bb, int[] cur) { if (codecs[cur[1]].getEscSeq1() != 0 && encs[cur[1]].encode(cb, bb, 0, CodingErrorAction.REPORT)) return; if ((codecs[cur[1]].getEscSeq1() == 0 || codecs[cur[1]].getEscSeq0() != codecs[cur[0]].getEscSeq0()) && encs[cur[0]].encode(cb, bb, 0, CodingErrorAction.REPORT)) return; if (encs[next] == null) encs[next] = new Encoder(codecs[next]); if (codecs[next].getEscSeq1() != 0) { if (encs[next].encode(cb, bb, codecs[next].getEscSeq1(), CodingErrorAction.REPORT)) { cur[1] = next; break; if (encs[next].encode(cb, bb, codecs[next].getEscSeq0(), CodingErrorAction.REPORT)) { cur[0] = next; break;
public boolean isUTF8() { return codecs[0].equals(Codec.UTF_8); }
public boolean containsASCII() { return codecs[0].containsASCII(); }
public boolean isASCII() { return codecs[0].equals(Codec.ISO_646); }
public String toText(String s) { return codecs[0].toText(s); }
public byte[] encode(String val, String delimiters) { return codecs[0].encode(val); }
public String decode(byte[] val) { return codecs[0].decode(val, 0, val.length); }
public static SpecificCharacterSet valueOf(String... codes) { if (codes == null || codes.length == 0) return DEFAULT; if (codes.length > 1) codes = checkISO2022(codes); Codec[] infos = new Codec[codes.length]; for (int i = 0; i < codes.length; i++) infos[i] = Codec.forCode(codes[i]); return codes.length > 1 ? new ISO2022(infos,codes) : new SpecificCharacterSet(infos, codes); }
private void activateInitialCharacterSet(ByteBuffer bb, int[] cur) { if (cur[0] != 0) { Encoder.escSeq(bb, codecs[0].getEscSeq0()); cur[0] = 0; } if (cur[1] != 0) { Encoder.escSeq(bb, codecs[0].getEscSeq1()); cur[1] = 0; } }
private void switchCodec(Codec[] codecs, int i, Codec codec) { codecs[i] = codec; if (codecs[0].getEscSeq0() == codecs[1].getEscSeq0()) codecs[0] = codecs[1]; }