Skip to content

Commit 9f6bb80

Browse files
authored
Merge pull request #74 from dpeger/fixes/master/utf8-character-deserialization-from-byte-array
[#73] Avoid `String` creation using system default charset
2 parents 604281d + 9eabd8b commit 9f6bb80

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

json-smart/src/main/java/net/minidev/json/parser/JSONParserByteArray.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
import net.minidev.json.JSONValue;
2020
import net.minidev.json.writer.JsonReaderI;
2121

22+
import java.nio.charset.Charset;
23+
import java.nio.charset.StandardCharsets;
24+
2225
/**
2326
* Parser for JSON text. Please note that JSONParser is NOT thread-safe.
2427
*
@@ -59,7 +62,7 @@ public <T> T parse(byte[] in, JsonReaderI<T> mapper) throws ParseException {
5962
}
6063

6164
protected void extractString(int beginIndex, int endIndex) {
62-
xs = new String(in, beginIndex, endIndex - beginIndex);
65+
xs = new String(in, beginIndex, endIndex - beginIndex, StandardCharsets.UTF_8);
6366
}
6467

6568
protected void extractStringTrim(int start, int stop) {
@@ -71,7 +74,7 @@ protected void extractStringTrim(int start, int stop) {
7174
while ((start < stop) && (val[stop - 1] <= ' ')) {
7275
stop--;
7376
}
74-
xs = new String(in, start, stop - start);
77+
xs = new String(in, start, stop - start, StandardCharsets.UTF_8);
7578
}
7679

7780
protected int indexOf(char c, int pos) {

json-smart/src/test/java/net/minidev/json/test/TestUtf8.java

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

2526
@ParameterizedTest

0 commit comments

Comments
 (0)