diff --git a/core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java b/core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java index 0b29e808..ae99748c 100644 --- a/core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java +++ b/core/src/main/java/com/android/volley/toolbox/HttpHeaderParser.java @@ -194,7 +194,7 @@ public static String parseCharset( for (int i = 1; i < params.length; i++) { String[] pair = params[i].trim().split("=", 0); if (pair.length == 2) { - if (pair[0].equals("charset")) { + if (pair[0].equalsIgnoreCase("charset")) { return pair[1]; } } diff --git a/core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java b/core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java index 7780c3e1..c39a60e7 100644 --- a/core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java +++ b/core/src/test/java/com/android/volley/toolbox/HttpHeaderParserTest.java @@ -265,6 +265,12 @@ public void parseCharset() { headers.put("Content-Type", "text/plain; charset=utf-8; frozzle=bar"); assertEquals("utf-8", HttpHeaderParser.parseCharset(headers)); + // Charset parameter name is case-insensitive. + headers.put("Content-Type", "text/plain; Charset=UTF-8"); + assertEquals("UTF-8", HttpHeaderParser.parseCharset(headers)); + headers.put("Content-Type", "text/plain; CHARSET=Shift_JIS"); + assertEquals("Shift_JIS", HttpHeaderParser.parseCharset(headers)); + // No Content-Type header headers.clear(); assertEquals("ISO-8859-1", HttpHeaderParser.parseCharset(headers));