Skip to content

Commit

Permalink
Merge pull request #74 from dpeger/fixes/master/utf8-character-deseri…
Browse files Browse the repository at this point in the history
…alization-from-byte-array

[#73] Avoid `String` creation using system default charset
  • Loading branch information
UrielCh committed Apr 24, 2021
2 parents 604281d + 9eabd8b commit 9f6bb80
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
import net.minidev.json.JSONValue;
import net.minidev.json.writer.JsonReaderI;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
* Parser for JSON text. Please note that JSONParser is NOT thread-safe.
*
Expand Down Expand Up @@ -59,7 +62,7 @@ public <T> T parse(byte[] in, JsonReaderI<T> mapper) throws ParseException {
}

protected void extractString(int beginIndex, int endIndex) {
xs = new String(in, beginIndex, endIndex - beginIndex);
xs = new String(in, beginIndex, endIndex - beginIndex, StandardCharsets.UTF_8);
}

protected void extractStringTrim(int start, int stop) {
Expand All @@ -71,7 +74,7 @@ protected void extractStringTrim(int start, int stop) {
while ((start < stop) && (val[stop - 1] <= ' ')) {
stop--;
}
xs = new String(in, start, stop - start);
xs = new String(in, start, stop - start, StandardCharsets.UTF_8);
}

protected int indexOf(char c, int pos) {
Expand Down
3 changes: 2 additions & 1 deletion json-smart/src/test/java/net/minidev/json/test/TestUtf8.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public static Stream<Arguments> languages() {
Arguments.of("Russian", "Русский"), Arguments.of("Farsi", "فارسی"), Arguments.of("Korean", "한국어"),
Arguments.of("Armenian", "Հայերեն"), Arguments.of("Hindi", "हिन्दी"), Arguments.of("Hebrew", "עברית"),
Arguments.of("Chinese", "中文"), Arguments.of("Amharic", "አማርኛ"), Arguments.of("Malayalam", "മലയാളം"),
Arguments.of("Assyrian Neo-Aramaic", "ܐܬܘܪܝܐ"), Arguments.of("Georgian", "მარგალური"));
Arguments.of("Assyrian Neo-Aramaic", "ܐܬܘܪܝܐ"), Arguments.of("Georgian", "მარგალური"),
Arguments.of("Emojis", "🐶🐱🐭🐹🐰🦊🐻🐼🐻‍❄🐨🐯🦁🐮🐷🐽🐸🐵🙈🙉🙊🐒🐔🐧🐦🐤🐣🐥🦆🦅🦉🦇🐺🐗🐴🦄🐝🐛"));
};

@ParameterizedTest
Expand Down

0 comments on commit 9f6bb80

Please sign in to comment.