5
5
--FILE--
6
6
<?php
7
7
$ encodings = [
8
- 'BASE64 ' ,
9
- 'HTML-ENTITIES ' ,
10
- 'Quoted-Printable ' ,
11
8
'UTF-16 ' ,
12
9
'UTF-16BE ' ,
13
10
'UTF-16LE ' ,
@@ -58,6 +55,8 @@ echo PHP_EOL;
58
55
59
56
$ input = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ' ;
60
57
$ bytes_length = 10 ;
58
+ // For ISO-2022-KR, the initial escape sequence 'ESC $ ) C' will occupy 4 bytes of the output;
59
+ // this will make mb_strcut only pick out 6 'A' characters from the input string and not 10
61
60
foreach ($ encodings as $ encoding ) {
62
61
$ converted_str = mb_convert_encoding ($ input , $ encoding , mb_internal_encoding ());
63
62
$ cut_str = mb_strcut ($ converted_str , 0 , $ bytes_length , $ encoding );
@@ -69,24 +68,22 @@ echo PHP_EOL;
69
68
70
69
$ input = '??? ' ;
71
70
$ bytes_length = 2 ;
71
+ // ISO-2022-KR will be affected by the initial escape sequence as stated above
72
72
foreach ($ encodings as $ encoding ) {
73
73
$ converted_str = mb_convert_encoding ($ input , $ encoding , mb_internal_encoding ());
74
74
$ cut_str = mb_strcut ($ converted_str , 0 , $ bytes_length , $ encoding );
75
75
$ reconverted_str = mb_convert_encoding ($ cut_str , mb_internal_encoding (), $ encoding );
76
- echo $ encoding .': ' .$ reconverted_str .PHP_EOL ;
76
+ echo $ encoding .trim ( ': ' .$ reconverted_str) .PHP_EOL ;
77
77
}
78
78
79
79
echo PHP_EOL ;
80
80
81
81
foreach ($ encodings as $ encoding ) {
82
- var_dump ( mb_strcut ($ input , 0 , $ bytes_length , $ encoding ));
82
+ echo $ encoding . trim ( ' : ' . mb_strcut ($ input , 0 , $ bytes_length , $ encoding )). PHP_EOL ;
83
83
}
84
84
85
85
?>
86
- --EXPECTF--
87
- BASE64: 宛如繁
88
- HTML-ENTITIES: 宛如
89
- Quoted-Printable: %s
86
+ --EXPECT--
90
87
UTF-16: 宛如繁星般宛如
91
88
UTF-16BE: 宛如繁星般宛如
92
89
UTF-16LE: 宛如繁星般宛如
@@ -101,9 +98,6 @@ CP50220: 宛如繁星
101
98
CP50221: 宛如繁星
102
99
CP50222: 宛如繁星
103
100
104
- BASE64: 星のように
105
- HTML-ENTITIES: 星の
106
- Quoted-Printable: 星の
107
101
UTF-16: 星のように月のように
108
102
UTF-16BE: 星のように月のように
109
103
UTF-16LE: 星のように月のように
@@ -118,9 +112,6 @@ CP50220: 星のように月の
118
112
CP50221: 星のように月の
119
113
CP50222: 星のように月の
120
114
121
- BASE64: %s
122
- HTML-ENTITIES: あa&
123
- Quoted-Printable: あa
124
115
UTF-16: あaいb
125
116
UTF-16BE: あaいb
126
117
UTF-16LE: あaいb
@@ -135,9 +126,6 @@ CP50220: あa
135
126
CP50221: あa
136
127
CP50222: あa
137
128
138
- BASE64: AAAAAA
139
- HTML-ENTITIES: AAAAAAAAAA
140
- Quoted-Printable: AAAAAAAAAA
141
129
UTF-16: AAAAA
142
130
UTF-16BE: AAAAA
143
131
UTF-16LE: AAAAA
@@ -146,15 +134,12 @@ UTF7-IMAP: AAAAAAAAAA
146
134
ISO-2022-JP-MS: AAAAAAAAAA
147
135
GB18030: AAAAAAAAAA
148
136
HZ: AAAAAAAAAA
149
- ISO-2022-KR: AAAAAAAAAA
137
+ ISO-2022-KR: AAAAAA
150
138
ISO-2022-JP-MOBILE#KDDI: AAAAAAAAAA
151
139
CP50220: AAAAAAAAAA
152
140
CP50221: AAAAAAAAAA
153
141
CP50222: AAAAAAAAAA
154
142
155
- BASE64:%s
156
- HTML-ENTITIES: ??
157
- Quoted-Printable: ??
158
143
UTF-16: ?
159
144
UTF-16BE: ?
160
145
UTF-16LE: ?
@@ -163,25 +148,22 @@ UTF7-IMAP: ??
163
148
ISO-2022-JP-MS: ??
164
149
GB18030: ??
165
150
HZ: ??
166
- ISO-2022-KR: ??
151
+ ISO-2022-KR:
167
152
ISO-2022-JP-MOBILE#KDDI: ??
168
153
CP50220: ??
169
154
CP50221: ??
170
155
CP50222: ??
171
156
172
- string(0) ""
173
- string(2) "??"
174
- string(2) "??"
175
- string(2) "??"
176
- string(2) "??"
177
- string(2) "??"
178
- string(2) "??"
179
- string(2) "??"
180
- string(2) "??"
181
- string(2) "??"
182
- string(2) "??"
183
- string(2) "??"
184
- string(2) "??"
185
- string(2) "??"
186
- string(2) "??"
187
- string(2) "??"
157
+ UTF-16: ??
158
+ UTF-16BE: ??
159
+ UTF-16LE: ??
160
+ UTF-7: ??
161
+ UTF7-IMAP: ??
162
+ ISO-2022-JP-MS: ??
163
+ GB18030: ??
164
+ HZ: ??
165
+ ISO-2022-KR:
166
+ ISO-2022-JP-MOBILE#KDDI: ??
167
+ CP50220: ??
168
+ CP50221: ??
169
+ CP50222: ??
0 commit comments