private static void decodeByteSegment(
      BitSource bits,
      StringBuffer result,
      int count,
      CharacterSetECI currentCharacterSetECI,
      Vector byteSegments,
      Hashtable hints)
      throws FormatException {
    // Don't crash trying to read more bits than we have available.
    if (count << 3 > bits.available()) {
      throw FormatException.getFormatInstance();
    }

    byte[] readBytes = new byte[count];
    for (int i = 0; i < count; i++) {
      readBytes[i] = (byte) bits.readBits(8);
    }
    String encoding;
    if (currentCharacterSetECI == null) {
      // The spec isn't clear on this mode; see
      // section 6.4.5: t does not say which encoding to assuming
      // upon decoding. I have seen ISO-8859-1 used as well as
      // Shift_JIS -- without anything like an ECI designator to
      // give a hint.
      encoding = StringUtils.guessEncoding(readBytes, hints);
    } else {
      encoding = currentCharacterSetECI.getEncodingName();
    }
    try {
      result.append(new String(readBytes, encoding));
    } catch (UnsupportedEncodingException uce) {
      throw FormatException.getFormatInstance();
    }
    byteSegments.addElement(readBytes);
  }
Пример #2
0
 private static void a(
     BitSource paramBitSource,
     StringBuilder paramStringBuilder,
     int paramInt,
     CharacterSetECI paramCharacterSetECI,
     Collection<byte[]> paramCollection,
     Map<DecodeHintType, ?> paramMap) {
   if (paramInt << 3 > paramBitSource.available()) throw FormatException.getFormatInstance();
   byte[] arrayOfByte = new byte[paramInt];
   for (int i = 0; i < paramInt; i++) arrayOfByte[i] = ((byte) paramBitSource.readBits(8));
   String str;
   if (paramCharacterSetECI == null) str = StringUtils.guessEncoding(arrayOfByte, paramMap);
   try {
     while (true) {
       paramStringBuilder.append(new String(arrayOfByte, str));
       paramCollection.add(arrayOfByte);
       return;
       str = paramCharacterSetECI.name();
     }
   } catch (UnsupportedEncodingException localUnsupportedEncodingException) {
   }
   throw FormatException.getFormatInstance();
 }