From 2a6aca0fcd82106a327edcba6dc928c077fe3354 Mon Sep 17 00:00:00 2001 From: nlevitt Date: Tue, 3 May 2011 17:14:28 +0000 Subject: [PATCH] * Recorder.java getContentReplayPrefixString() - use fallback character encoding if necessary, much like getContentReplayCharSequence() --- .../src/main/java/org/archive/util/Recorder.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/org/archive/util/Recorder.java b/commons/src/main/java/org/archive/util/Recorder.java index 83b5e053..8650bfdc 100644 --- a/commons/src/main/java/org/archive/util/Recorder.java +++ b/commons/src/main/java/org/archive/util/Recorder.java @@ -494,10 +494,19 @@ public class Recorder { * @return String prefix, or empty String (with logged exception) on any error */ public String getContentReplayPrefixString(int size) { + Charset charset = Charsets.UTF_8; + if (characterEncoding != null) { + try { + charset = Charset.forName(characterEncoding); + } catch (IllegalArgumentException e) { + logger.log(Level.WARNING,"charset problem: " + characterEncoding, e); + // TODO: better detection or default + charset = ReplayCharSequence.FALLBACK_CHARSET; + } + } + try { - InputStreamReader isr = (characterEncoding == null) - ? new InputStreamReader(getContentReplayInputStream(), Charsets.ISO_8859_1) - : new InputStreamReader(getContentReplayInputStream(), characterEncoding); + InputStreamReader isr = new InputStreamReader(getContentReplayInputStream(), charset); char[] chars = new char[size]; int count = isr.read(chars); isr.close();