RFR: 8266013: Unexpected replacement character handling on stateful CharsetEncoder

Ichiroh Takiguchi itakiguchi at openjdk.java.net
Tue Apr 27 16:56:58 UTC 2021


When an invalid character is converted by getBytes() method, the character is converted to replacement byte data.
Shift code (SO/SI) may not be added into right place by EBCDIC Mix charset.
EBCDIC Mix charset encoder is stateful encoder.
Shift code should be added by switching character set.
On x-IBM1364, "\u3000\uD800" should be converted to "\x0E\x40\x40\x0F\x6F", but "\x0E\x40\x40\x6F\x0F"
SI is not in right place.

Also ISO2022 related charsets use escape sequence to switch character set.
But same kind of issue is there.

-------------

Commit messages:
 - 8266013: Unexpected replacement character handling on stateful CharsetEncoder

Changes: https://git.openjdk.java.net/jdk/pull/3719/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3719&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266013
  Stats: 248 lines in 3 files changed: 228 ins; 12 del; 8 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3719.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3719/head:pull/3719

PR: https://git.openjdk.java.net/jdk/pull/3719


More information about the nio-dev mailing list