diff options
author | Thomas Wolf | 2021-02-28 15:08:06 +0000 |
---|---|---|
committer | Thomas Wolf | 2021-03-09 13:10:08 +0000 |
commit | aa8b577a1dc176925cc42f9dc330ded55bf7d2f2 (patch) | |
tree | 9eb7a997ed2b1642e64529dd0b36131a8dd21e3b | |
parent | d3fba63080073e57e76c8699c357bbce5dbea526 (diff) | |
download | eclipse.platform.ua-aa8b577a1dc176925cc42f9dc330ded55bf7d2f2.tar.gz eclipse.platform.ua-aa8b577a1dc176925cc42f9dc330ded55bf7d2f2.tar.xz eclipse.platform.ua-aa8b577a1dc176925cc42f9dc330ded55bf7d2f2.zip |
Read Json stream as UTF-8I20210309-1800
Do not (implicitly) rely on Charset.defaultCharset(). RFC 8259
specifies UTF-8 unless in a closed system. Older RFC 7159 and RFC
4627 allowed UTF-8, UTF-16, UTF-32, big or little endian, with or
without BOM.
Change-Id: I33ddfacccc97f81d9eeaf444f734c469028c8214
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
-rw-r--r-- | org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java b/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java index 95d8fc78b..ec6312cae 100644 --- a/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java +++ b/org.eclipse.tips.json/src/org/eclipse/tips/json/JsonTipProvider.java @@ -18,6 +18,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.text.MessageFormat; import java.text.ParseException; import java.util.ArrayList; @@ -105,7 +106,10 @@ public abstract class JsonTipProvider extends TipProvider { } private JsonObject loadJsonObject() throws IOException { - try (InputStream stream = fJsonUrl.openStream(); InputStreamReader reader = new InputStreamReader(stream)) { + // RFC 8259: https://tools.ietf.org/html/rfc8259#section-8.1 + // Json MUST be encoded as UTF-8, unless in a closed system. + try (InputStream stream = fJsonUrl.openStream(); + InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { Object result = JsonParser.parseReader(reader); if (result instanceof JsonObject) { return (JsonObject) result; |