mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-25 14:20:35 +00:00
8042125: Japanese character converters incompatible between Java 7 and Java 8
To add the missing .nr and c2b mapping tables Reviewed-by: okutsu
This commit is contained in:
parent
b04e91828a
commit
abaeabd0cd
7
jdk/make/data/charsetmapping/JIS_X_0208_MS932.c2b
Normal file
7
jdk/make/data/charsetmapping/JIS_X_0208_MS932.c2b
Normal file
@ -0,0 +1,7 @@
|
||||
0x2124 0x00b8
|
||||
0x2126 0x00b7
|
||||
0x2131 0x00af
|
||||
0x2263 0x00ab
|
||||
0x2264 0x00bb
|
||||
0x2574 0x3094
|
||||
0x264c 0x00b5
|
||||
@ -1,7 +1,7 @@
|
||||
#
|
||||
# mapping is based on JIS_X_0208_MS932_De/Encoder
|
||||
#
|
||||
# moved following entries to .nr
|
||||
# copied following entries to .nr
|
||||
#
|
||||
# 0x224c 0xffe2
|
||||
# 0x225d 0x22a5
|
||||
@ -14,7 +14,7 @@
|
||||
# 0x2d7b 0x2229
|
||||
# 0x2d7c 0x222a
|
||||
#
|
||||
# and following to c2b
|
||||
# and moved following to c2b
|
||||
#
|
||||
# 0x2124 0x00b8
|
||||
# 0x2126 0x00b7
|
||||
@ -144,13 +144,13 @@
|
||||
0x2241 0x2229
|
||||
0x224a 0x2227
|
||||
0x224b 0x2228
|
||||
#0x224c 0xffe2
|
||||
0x224c 0xffe2
|
||||
0x224d 0x21d2
|
||||
0x224e 0x21d4
|
||||
0x224f 0x2200
|
||||
0x2250 0x2203
|
||||
0x225c 0x2220
|
||||
#0x225d 0x22a5
|
||||
0x225d 0x22a5
|
||||
0x225e 0x2312
|
||||
0x225f 0x2202
|
||||
0x2260 0x2207
|
||||
@ -158,11 +158,11 @@
|
||||
0x2262 0x2252
|
||||
0x2263 0x226a
|
||||
0x2264 0x226b
|
||||
#0x2265 0x221a
|
||||
0x2265 0x221a
|
||||
0x2266 0x223d
|
||||
0x2267 0x221d
|
||||
0x2268 0x2235
|
||||
#0x2269 0x222b
|
||||
0x2269 0x222b
|
||||
0x226a 0x222c
|
||||
0x2272 0x212b
|
||||
0x2273 0x2030
|
||||
@ -620,19 +620,19 @@
|
||||
0x2d6d 0x337e
|
||||
0x2d6e 0x337d
|
||||
0x2d6f 0x337c
|
||||
#0x2d70 0x2252
|
||||
#0x2d71 0x2261
|
||||
0x2d70 0x2252
|
||||
0x2d71 0x2261
|
||||
0x2d72 0x222b
|
||||
0x2d73 0x222e
|
||||
0x2d74 0x2211
|
||||
0x2d75 0x221a
|
||||
0x2d76 0x22a5
|
||||
#0x2d77 0x2220
|
||||
0x2d77 0x2220
|
||||
0x2d78 0x221f
|
||||
0x2d79 0x22bf
|
||||
#0x2d7a 0x2235
|
||||
#0x2d7b 0x2229
|
||||
#0x2d7c 0x222a
|
||||
0x2d7a 0x2235
|
||||
0x2d7b 0x2229
|
||||
0x2d7c 0x222a
|
||||
0x3021 0x4e9c
|
||||
0x3022 0x5516
|
||||
0x3023 0x5a03
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
# as the round-trip entries.
|
||||
#
|
||||
# b2c and c2b all have entry "0x2271 <-> 0x2116", so the
|
||||
# "0x742c -> 0x2116" entry is moved to the .nr table.
|
||||
# "0x742c -> 0x2116" entry is copied to the .nr table.
|
||||
#
|
||||
# mapping (c2b) generated from JIS_X_0212_Solaris_Encoder has
|
||||
# two "dup" entries
|
||||
@ -6126,7 +6126,7 @@
|
||||
0x7429 0xff07
|
||||
0x742a 0xff02
|
||||
0x742b 0x3231
|
||||
#0x742c 0x2116
|
||||
0x742c 0x2116
|
||||
0x742d 0x2121
|
||||
0x742e 0x70bb
|
||||
0x742f 0x4efc
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 4626545 4879522 4913711 4119445
|
||||
@bug 4626545 4879522 4913711 4119445 8042125
|
||||
@summary Check full coverage encode/decode for ISO-2022-JP
|
||||
*/
|
||||
|
||||
@ -33,6 +33,8 @@
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class TestISO2022JP {
|
||||
|
||||
private final static String US_ASCII =
|
||||
@ -608,5 +610,41 @@ public class TestISO2022JP {
|
||||
if (encoded[i] != expected[i])
|
||||
throw new Exception("ISO-2022-JP Decoder error");
|
||||
}
|
||||
|
||||
// Test for 7 c2b codepoints in ms932 iso2022jp
|
||||
String testStr4 = "\u00b8\u00b7\u00af\u00ab\u00bb\u3094\u00b5";
|
||||
expected = new byte[] {
|
||||
(byte)0x1b, (byte)0x24, (byte)0x42,
|
||||
(byte)0x21, (byte)0x24,
|
||||
(byte)0x21, (byte)0x26,
|
||||
(byte)0x21, (byte)0x31,
|
||||
(byte)0x22, (byte)0x63,
|
||||
(byte)0x22, (byte)0x64,
|
||||
(byte)0x25, (byte)0x74,
|
||||
(byte)0x26, (byte)0x4c,
|
||||
(byte)0x1b, (byte)0x28, (byte)0x42 };
|
||||
encoded = testStr4.getBytes("x-windows-iso2022jp");
|
||||
if (!Arrays.equals(encoded, expected)) {
|
||||
throw new Exception("MSISO2022JP Encoder error");
|
||||
}
|
||||
// Test for 10 non-roundtrip characters in ms932 iso2022jp
|
||||
encoded = new byte[] {
|
||||
(byte)0x1B, (byte)0x24, (byte)0x42,
|
||||
(byte)0x22, (byte)0x4C,
|
||||
(byte)0x22, (byte)0x5D,
|
||||
(byte)0x22, (byte)0x65,
|
||||
(byte)0x22, (byte)0x69,
|
||||
(byte)0x2D, (byte)0x70,
|
||||
(byte)0x2D, (byte)0x71,
|
||||
(byte)0x2D, (byte)0x77,
|
||||
(byte)0x2D, (byte)0x7A,
|
||||
(byte)0x2D, (byte)0x7B,
|
||||
(byte)0x2D, (byte)0x7C,
|
||||
(byte)0x1B, (byte)0x28, (byte)0x42,
|
||||
};
|
||||
String expectedStr = "\uffe2\u22a5\u221a\u222b\u2252\u2261\u2220\u2235\u2229\u222a";
|
||||
if (!new String(encoded, "x-windows-iso2022jp").equals(expectedStr)) {
|
||||
throw new Exception("MSISO2022JP Decoder error");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
@bug 4179800
|
||||
@bug 4179800 8042125
|
||||
@summary Make sure JIS0212.Decoder really works
|
||||
*/
|
||||
|
||||
@ -38,25 +38,26 @@ public class TestJIS0212Decoder {
|
||||
(byte)0x30, (byte)0x25, (byte)0x30, (byte)0x26,
|
||||
(byte)0x30, (byte)0x27};
|
||||
|
||||
public static void main(String args[])
|
||||
throws Exception
|
||||
{
|
||||
public static void main(String args[]) throws Exception {
|
||||
test();
|
||||
}
|
||||
|
||||
private static void test()
|
||||
throws Exception
|
||||
{
|
||||
private static void test() throws Exception {
|
||||
CharsetDecoder dec = Charset.forName("JIS0212").newDecoder();
|
||||
try {
|
||||
String ret = dec.decode(ByteBuffer.wrap(inputBytes)).toString();
|
||||
if (ret.length() != outputString.length()
|
||||
|| ! outputString.equals(ret)){
|
||||
throw new Exception("ByteToCharJIS0212 does not work correctly");
|
||||
throw new Exception("JIS0212 decoder does not work correctly");
|
||||
}
|
||||
} catch (Exception e){
|
||||
throw new Exception("JIS0212 encoder does not work correctly");
|
||||
}
|
||||
catch (Exception e){
|
||||
throw new Exception("ByteToCharJIS0212 does not work correctly");
|
||||
|
||||
// test 0x742c -> u2116 mapping
|
||||
if (!"\u2116".equals(new String(new byte[] { (byte)0x8f, (byte)0xf4, (byte)0xac },
|
||||
"x-eucJP-Open"))) {
|
||||
throw new RuntimeException("JIS0212_Solaris nr mapping failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user