summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-11-08 21:08:59 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2012-11-08 21:08:59 +0100
commit8cf119ce7f048e03bacdb3d5dcf2aaafe89b2b32 (patch)
treeb462f714e86bfb5d7b6098d1577edbcd277dfd5b
parent8297d03ef8b4a38d1bc385e6efa4a26dab8cfcc4 (diff)
downloadAntennaPod-8cf119ce7f048e03bacdb3d5dcf2aaafe89b2b32.zip
Reading UTF-8 strings should now work
-rw-r--r--src/de/danoeh/antennapod/util/vorbiscommentreader/VorbisCommentReader.java19
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();
}
/**