Skip to content

Commit 1751f34

Browse files
committed
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1: Use different mblen_table for different SJIS variants Correct entry for 0x80,0xFD-FF in SJIS multi-byte character length table
2 parents de633c3 + 3152b7b commit 1751f34

File tree

7 files changed

+167
-33
lines changed

7 files changed

+167
-33
lines changed

ext/mbstring/libmbfl/filters/mbfilter_sjis.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static int mbfl_filt_conv_sjis_wchar_flush(mbfl_convert_filter *filter);
4040
static size_t mb_sjis_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf, size_t bufsize, unsigned int *state);
4141
static void mb_wchar_to_sjis(uint32_t *in, size_t len, mb_convert_buf *buf, bool end);
4242

43-
const unsigned char mblen_table_sjis[] = { /* 0x80-0x9f,0xE0-0xFF */
43+
const unsigned char mblen_table_sjis[] = { /* 0x81-0x9F,0xE0-0xEF */
4444
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4545
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4646
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -49,14 +49,14 @@ const unsigned char mblen_table_sjis[] = { /* 0x80-0x9f,0xE0-0xFF */
4949
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5050
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5151
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
52-
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
52+
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
5353
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
5454
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5555
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5656
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5757
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5858
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
59-
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
59+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
6060
};
6161

6262
static const char *mbfl_encoding_sjis_aliases[] = {"x-sjis", "SHIFT-JIS", NULL};

ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#include "unicode_table_jis2004.h"
4242
#include "unicode_table_jis.h"
4343

44-
extern const unsigned char mblen_table_sjis[];
44+
extern const unsigned char mblen_table_sjis_mobile[];
4545
extern const unsigned char mblen_table_eucjp[];
4646

4747
static size_t mb_sjis2004_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf, size_t bufsize, unsigned int *state);
@@ -62,7 +62,7 @@ const mbfl_encoding mbfl_encoding_sjis2004 = {
6262
"SJIS-2004",
6363
"Shift_JIS",
6464
mbfl_encoding_sjis2004_aliases,
65-
mblen_table_sjis,
65+
mblen_table_sjis_mobile, /* Leading byte values used for SJIS-2004 are the same as mobile SJIS variants */
6666
MBFL_ENCTYPE_GL_UNSAFE,
6767
&vtbl_sjis2004_wchar,
6868
&vtbl_wchar_sjis2004,

ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,24 @@
3535

3636
#include "sjis_mac2uni.h"
3737

38-
extern const unsigned char mblen_table_sjis[];
38+
const unsigned char mblen_table_sjismac[] = { /* 0x81-0x9F,0xE0-0xED */
39+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
40+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
41+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
42+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
43+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
44+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
45+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
46+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
47+
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
48+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
49+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
50+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
51+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
52+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
53+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
54+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
55+
};
3956

4057
static int mbfl_filt_conv_wchar_sjis_mac_flush(mbfl_convert_filter *filter);
4158
static int mbfl_filt_conv_sjis_mac_wchar_flush(mbfl_convert_filter *filter);
@@ -49,7 +66,7 @@ const mbfl_encoding mbfl_encoding_sjis_mac = {
4966
"SJIS-mac",
5067
"Shift_JIS",
5168
mbfl_encoding_sjis_mac_aliases,
52-
mblen_table_sjis,
69+
mblen_table_sjismac,
5370
MBFL_ENCTYPE_GL_UNSAFE,
5471
&vtbl_sjis_mac_wchar,
5572
&vtbl_wchar_sjis_mac,

ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,26 @@
3535

3636
#include "emoji2uni.h"
3737

38+
const unsigned char mblen_table_sjis_mobile[] = { /* 0x81-0x9F,0xE0-0xFC */
39+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
40+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
41+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
42+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
43+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
44+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
45+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
46+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
47+
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
48+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
49+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
50+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
51+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
52+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
53+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
54+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1
55+
};
56+
3857
extern int mbfl_bisec_srch2(int w, const unsigned short tbl[], int n);
39-
extern const unsigned char mblen_table_sjis[];
4058

4159
static int mbfl_filt_conv_sjis_wchar_flush(mbfl_convert_filter *filter);
4260
static size_t mb_sjis_docomo_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf, size_t bufsize, unsigned int *state);
@@ -55,7 +73,7 @@ const mbfl_encoding mbfl_encoding_sjis_docomo = {
5573
"SJIS-Mobile#DOCOMO",
5674
"Shift_JIS",
5775
mbfl_encoding_sjis_docomo_aliases,
58-
mblen_table_sjis,
76+
mblen_table_sjis_mobile,
5977
MBFL_ENCTYPE_GL_UNSAFE,
6078
&vtbl_sjis_docomo_wchar,
6179
&vtbl_wchar_sjis_docomo,
@@ -68,7 +86,7 @@ const mbfl_encoding mbfl_encoding_sjis_kddi = {
6886
"SJIS-Mobile#KDDI",
6987
"Shift_JIS",
7088
mbfl_encoding_sjis_kddi_aliases,
71-
mblen_table_sjis,
89+
mblen_table_sjis_mobile,
7290
MBFL_ENCTYPE_GL_UNSAFE,
7391
&vtbl_sjis_kddi_wchar,
7492
&vtbl_wchar_sjis_kddi,
@@ -81,7 +99,7 @@ const mbfl_encoding mbfl_encoding_sjis_sb = {
8199
"SJIS-Mobile#SOFTBANK",
82100
"Shift_JIS",
83101
mbfl_encoding_sjis_sb_aliases,
84-
mblen_table_sjis,
102+
mblen_table_sjis_mobile,
85103
MBFL_ENCTYPE_GL_UNSAFE,
86104
&vtbl_sjis_sb_wchar,
87105
&vtbl_wchar_sjis_sb,

ext/mbstring/tests/mb_str_split_jp.phpt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,17 @@ if(end($array) !== $enc){
6969
last array element: %s expected: %s\n", unpack("H*", end($array))[1],unpack("H*", $enc)[1]);
7070
}
7171

72+
/* SJIS byte 0x80 was previously wrongly treated as the starting byte for a 2-byte character */
73+
echo "== Regression test for SJIS byte 0x80 ==\n";
74+
foreach (['SJIS', 'SJIS-2004', 'MacJapanese', 'SJIS-Mobile#DOCOMO', 'SJIS-Mobile#KDDI', 'SJIS-Mobile#SoftBank'] as $encoding) {
75+
$array = mb_str_split("\x80\xA1abc\x80\xA1", 2, $encoding);
76+
echo "$encoding: [" . implode(', ', array_map('bin2hex', $array)) . "]\n";
77+
78+
// Also try bytes 0xFD, 0xFE, and 0xFF
79+
$array = mb_str_split("abc\xFD\xFE\xFFab\xFD\xFE\xFF", 2, $encoding);
80+
echo "$encoding: [" . implode(', ', array_map('bin2hex', $array)) . "]\n";
81+
}
82+
7283
?>
7384
--EXPECT--
7485
BIG-5: a4e9 a5bb
@@ -80,3 +91,16 @@ UTF-16LE: e565 2c67
8091
UTF-32BE: 000065e5 0000672c
8192
UTF-32LE: e5650000 2c670000
8293
UTF-8: e697a5 e69cac
94+
== Regression test for SJIS byte 0x80 ==
95+
SJIS: [80a1, 6162, 6380, a1]
96+
SJIS: [6162, 63fd, feff, 6162, fdfe, ff]
97+
SJIS-2004: [80a1, 6162, 6380, a1]
98+
SJIS-2004: [6162, 63fd, feff, 6162, fdfe, ff]
99+
MacJapanese: [80a1, 6162, 6380, a1]
100+
MacJapanese: [6162, 63fd, feff, 6162, fdfe, ff]
101+
SJIS-Mobile#DOCOMO: [80a1, 6162, 6380, a1]
102+
SJIS-Mobile#DOCOMO: [6162, 63fd, feff, 6162, fdfe, ff]
103+
SJIS-Mobile#KDDI: [80a1, 6162, 6380, a1]
104+
SJIS-Mobile#KDDI: [6162, 63fd, feff, 6162, fdfe, ff]
105+
SJIS-Mobile#SoftBank: [80a1, 6162, 6380, a1]
106+
SJIS-Mobile#SoftBank: [6162, 63fd, feff, 6162, fdfe, ff]

ext/mbstring/tests/mb_strlen.phpt

Lines changed: 53 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,43 +13,59 @@ include_once('common.inc');
1313
mb_detect_order('auto');
1414

1515
// Test string
16-
$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。';
16+
$euc_jp = mb_convert_encoding("0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。", 'EUC-JP', 'UTF-8');
1717
$ascii = 'abcdefghijklmnopqrstuvwxyz;]=#0123456789';
1818

19-
// ASCII
2019
echo "== ASCII ==\n";
21-
print mb_strlen($ascii,'ASCII') . "\n";
22-
print strlen($ascii) . "\n";
20+
print mb_strlen($ascii,'ASCII') . "\n";
21+
print strlen($ascii) . "\n";
2322

24-
// EUC-JP
2523
echo "== EUC-JP ==\n";
26-
print mb_strlen($euc_jp,'EUC-JP') . "\n";
24+
print mb_strlen($euc_jp,'EUC-JP') . "\n";
2725
mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
28-
print strlen($euc_jp) . "\n";
26+
print strlen($euc_jp) . "\n";
2927

30-
// SJIS
3128
echo "== SJIS ==\n";
3229
$sjis = mb_convert_encoding($euc_jp, 'SJIS','EUC-JP');
33-
print mb_strlen($sjis,'SJIS') . "\n";
30+
print mb_strlen($sjis,'SJIS') . "\n";
3431
mb_internal_encoding('SJIS') or print("mb_internal_encoding() failed\n");
35-
print strlen($sjis) . "\n";
32+
print strlen($sjis) . "\n";
33+
print "-- Testing illegal bytes 0x80,0xFD-FF --\n";
34+
// mb_strlen used to wrongly treat 0x80 as the starting byte of a 2-byte SJIS character
35+
print mb_strlen("\x80\xA1", 'SJIS') . "\n";
36+
print mb_strlen("abc\xFD\xFE\xFF", 'SJIS') . "\n";
37+
38+
echo "== MacJapanese ==\n";
39+
print mb_strlen("\x80\xA1", 'MacJapanese') . "\n";
40+
print mb_strlen("abc\xFD\xFE\xFF", 'MacJapanese') . "\n";
41+
42+
echo "== SJIS-2004 ==\n";
43+
print mb_strlen("\x80\xA1", 'SJIS-2004') . "\n";
44+
print mb_strlen("abc\xFD\xFE\xFF", 'SJIS-2004') . "\n";
45+
46+
echo "== SJIS-Mobile#DOCOMO ==\n";
47+
print mb_strlen("\x80\xA1", 'SJIS-Mobile#DOCOMO') . "\n";
48+
print mb_strlen("abc\xFD\xFE\xFF", 'SJIS-Mobile#DOCOMO') . "\n";
49+
50+
echo "== SJIS-Mobile#KDDI ==\n";
51+
print mb_strlen("\x80\xA1", 'SJIS-Mobile#KDDI') . "\n";
52+
print mb_strlen("abc\xFD\xFE\xFF", 'SJIS-Mobile#KDDI') . "\n";
53+
54+
echo "== SJIS-Mobile#SoftBank ==\n";
55+
print mb_strlen("\x80\xA1", 'SJIS-Mobile#SoftBank') . "\n";
56+
print mb_strlen("abc\xFD\xFE\xFF", 'SJIS-Mobile#SoftBank') . "\n";
3657

37-
// JIS
38-
// Note: either convert_encoding or strlen has problem
3958
echo "== JIS ==\n";
4059
$jis = mb_convert_encoding($euc_jp, 'JIS','EUC-JP');
41-
print mb_strlen($jis,'JIS') . "\n";
60+
print mb_strlen($jis,'JIS') . "\n";
4261
mb_internal_encoding('JIS') or print("mb_internal_encoding() failed\n");
43-
print strlen($jis) . "\n";
62+
print strlen($jis) . "\n";
4463

45-
// UTF-8
46-
// Note: either convert_encoding or strlen has problem
4764
echo "== UTF-8 ==\n";
4865
$utf8 = mb_convert_encoding($euc_jp, 'UTF-8','EUC-JP');
49-
print mb_strlen($utf8,'UTF-8') . "\n";
66+
print mb_strlen($utf8,'UTF-8') . "\n";
5067
mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
51-
print strlen($utf8) . "\n";
52-
68+
print strlen($utf8) . "\n";
5369

5470
// Wrong Parameters
5571
echo "== WRONG PARAMETERS ==\n";
@@ -72,6 +88,24 @@ try {
7288
== SJIS ==
7389
43
7490
72
91+
-- Testing illegal bytes 0x80,0xFD-FF --
92+
2
93+
6
94+
== MacJapanese ==
95+
2
96+
6
97+
== SJIS-2004 ==
98+
2
99+
6
100+
== SJIS-Mobile#DOCOMO ==
101+
2
102+
6
103+
== SJIS-Mobile#KDDI ==
104+
2
105+
6
106+
== SJIS-Mobile#SoftBank ==
107+
2
108+
6
75109
== JIS ==
76110
43
77111
90

ext/mbstring/tests/mb_substr.phpt

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ ini_set('include_path','.');
88
include_once('common.inc');
99

1010
// EUC-JP
11-
$euc_jp = "0123\xA4\xB3\xA4\xCE\xCA\xB8\xBB\xFA\xCE\xF3\xA4\xCF\xC6\xFC\xCB\xDC\xB8\xEC\xA4\xC7\xA4\xB9\xA1\xA3EUC-JP\xA4\xF2\xBB\xC8\xA4\xC3\xA4\xC6\xA4\xA4\xA4\xDE\xA4\xB9\xA1\xA3\xC6\xFC\xCB\xDC\xB8\xEC\xA4\xCF\xCC\xCC\xC5\xDD\xBD\xAD\xA4\xA4\xA1\xA3";
11+
$euc_jp = mb_convert_encoding('0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。', 'EUC-JP', 'UTF-8');
1212
// SJIS
13-
$sjis = "\x93\xFA\x96{\x8C\xEA\x83e\x83L\x83X\x83g\x82\xC5\x82\xB7\x81B01234\x82T\x82U\x82V\x82W\x82X\x81B";
13+
$sjis = mb_convert_encoding('日本語テキストです。0123456789。', 'SJIS', 'UTF-8');
1414
// ISO-2022-JP
1515
$iso2022jp = "\x1B\$B\x21\x21!r\x1B(BABC";
1616
// GB-18030
17-
$gb18030 = "\xC3\xDC\xC2\xEB\xD3\xC3\xBB\xA7\xC3\xFB\xC3\xDC\xC2\xEB\xC3\xFB\xB3\xC6\xC3\xFB\xB3\xC6";
17+
$gb18030 = mb_convert_encoding('密码用户名密码名称名称', 'GB18030', 'UTF-8');
1818
// HZ
1919
$hz = "The next sentence is in GB.~{<:Ky2;S{#,NpJ)l6HK!#~}Bye.";
2020
// UTF-8
@@ -40,6 +40,29 @@ print "2: " . bin2hex(mb_substr($sjis, -1, null, 'SJIS')) . "\n";
4040
print "3: " . bin2hex(mb_substr($sjis, -5, 3, 'SJIS')) . "\n";
4141
print "4: " . bin2hex(mb_substr($sjis, 1, null, 'SJIS')) . "\n";
4242
print "5:" . bin2hex(mb_substr($sjis, 10, 0, 'SJIS')) . "\n";
43+
echo "-- Testing illegal SJIS byte 0x80 --\n";
44+
print bin2hex(mb_substr("\x80abc\x80\xA1", 3, 2, 'SJIS')) . "\n";
45+
print bin2hex(mb_substr("\x80abc\x80\xA1", 0, 3, 'SJIS')) . "\n";
46+
47+
echo "SJIS-2004:\n";
48+
print bin2hex(mb_substr("\x80abc\x80\xA1", 3, 2, 'SJIS-2004')) . "\n";
49+
print bin2hex(mb_substr("\x80abc\x80\xA1", 0, 3, 'SJIS-2004')) . "\n";
50+
51+
echo "MacJapanese:\n";
52+
print bin2hex(mb_substr("\x80abc\x80\xA1", 3, 2, 'MacJapanese')) . "\n";
53+
print bin2hex(mb_substr("\x80abc\x80\xA1", 0, 3, 'MacJapanese')) . "\n";
54+
55+
echo "SJIS-Mobile#DOCOMO:\n";
56+
print bin2hex(mb_substr("\x80abc\x80\xA1", 3, 2, 'SJIS-Mobile#DOCOMO')) . "\n";
57+
print bin2hex(mb_substr("\x80abc\x80\xA1", 0, 3, 'SJIS-Mobile#DOCOMO')) . "\n";
58+
59+
echo "SJIS-Mobile#KDDI:\n";
60+
print bin2hex(mb_substr("\x80abc\x80\xA1", 3, 2, 'SJIS-Mobile#KDDI')) . "\n";
61+
print bin2hex(mb_substr("\x80abc\x80\xA1", 0, 3, 'SJIS-Mobile#KDDI')) . "\n";
62+
63+
echo "SJIS-Mobile#SoftBank:\n";
64+
print bin2hex(mb_substr("\x80abc\x80\xA1", 3, 2, 'SJIS-Mobile#SoftBank')) . "\n";
65+
print bin2hex(mb_substr("\x80abc\x80\xA1", 0, 3, 'SJIS-Mobile#SoftBank')) . "\n";
4366

4467
echo "ISO-2022-JP:\n";
4568
print "1: " . bin2hex(mb_substr($iso2022jp, 0, 3, 'ISO-2022-JP')) . "\n";
@@ -98,6 +121,24 @@ SJIS:
98121
3: 825582568257
99122
4: 967b8cea8365834c8358836782c582b781423031323334825482558256825782588142
100123
5:
124+
-- Testing illegal SJIS byte 0x80 --
125+
6380
126+
806162
127+
SJIS-2004:
128+
6380
129+
806162
130+
MacJapanese:
131+
6380
132+
806162
133+
SJIS-Mobile#DOCOMO:
134+
6380
135+
806162
136+
SJIS-Mobile#KDDI:
137+
6380
138+
806162
139+
SJIS-Mobile#SoftBank:
140+
6380
141+
806162
101142
ISO-2022-JP:
102143
1: 1b2442212121721b284241
103144
2: 43

0 commit comments

Comments
 (0)