diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-11-08 21:08:59 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-11-08 21:08:59 +0100 |
commit | 8cf119ce7f048e03bacdb3d5dcf2aaafe89b2b32 (patch) | |
tree | b462f714e86bfb5d7b6098d1577edbcd277dfd5b /src/de/danoeh/antennapod | |
parent | 8297d03ef8b4a38d1bc385e6efa4a26dab8cfcc4 (diff) | |
download | AntennaPod-8cf119ce7f048e03bacdb3d5dcf2aaafe89b2b32.zip |
Reading UTF-8 strings should now work
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r-- | src/de/danoeh/antennapod/util/vorbiscommentreader/VorbisCommentReader.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/de/danoeh/antennapod/util/vorbiscommentreader/VorbisCommentReader.java b/src/de/danoeh/antennapod/util/vorbiscommentreader/VorbisCommentReader.java index 2ffe3c05f..ceaa8d5cd 100644 --- a/src/de/danoeh/antennapod/util/vorbiscommentreader/VorbisCommentReader.java +++ b/src/de/danoeh/antennapod/util/vorbiscommentreader/VorbisCommentReader.java @@ -3,6 +3,11 @@ package de.danoeh.antennapod.util.vorbiscommentreader; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CoderResult; import java.util.Arrays; import org.apache.commons.io.EndianUtils; @@ -64,8 +69,7 @@ public abstract class VorbisCommentReader { if (readValue) { String value = readUTF8String( input, - (int) (vectorLength - key.length() - 1)) - .toLowerCase(); + (int) (vectorLength - key.length() - 1)); onContentVectorValue(key, value); } else { IOUtils.skipFully(input, @@ -92,12 +96,11 @@ public abstract class VorbisCommentReader { private String readUTF8String(InputStream input, long length) throws IOException { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < length; i++) { - char c = (char) input.read(); - buffer.append(c); - } - return buffer.toString(); + byte[] buffer = new byte[(int) length]; + + IOUtils.readFully(input, buffer); + Charset charset = Charset.forName("UTF-8"); + return charset.newDecoder().decode(ByteBuffer.wrap(buffer)).toString(); } /** |