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); }
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(); }