Skip to content

Commit 6a4b6d2

Browse files
committed
mb_detect_encoding recognizes all letters in Czech alphabet
1 parent 3b6ee1e commit 6a4b6d2

File tree

3 files changed

+84
-5
lines changed

3 files changed

+84
-5
lines changed

ext/mbstring/common_codepoints.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
0x00A1 0x00AC # Pound sign, Yen sign, copyright sign...
55
0x00AE 0x00FF # Accented Latin characters
66
0x0104 0x0107 # Polish
7-
0x0118 0x0119 # Polish
7+
0x010C 0x010F # Czech
8+
0x0118 0x011B # Polish, Czech
89
0x0141 0x0144 # Polish
9-
0x015A 0x015B # Polish
10+
0x0147 0x0148 # Czech
11+
0x0158 0x015B # Czech, Polish
1012
0x0160 0x0161 # Used in Slavic names
11-
0x0179 0x017C # Polish
12-
0x017D 0x017E # Used in Slavic names
13+
0x0164 0x0165 # Czech
14+
0x016E 0x016F # Czech
15+
0x0179 0x017E # Polish, Czech, other Slavic languages
1316
0x0300 0x030A # Diacritical marks
1417
0x0370 0x0377 # Greek
1518
0x037A 0x037F # Greek

ext/mbstring/rare_cp_bitvec.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
static uint32_t rare_codepoint_bitvec[] = {
1313
0xffffd9ff, 0x00000000, 0x00000000, 0x80000000, 0xffffffff, 0x00002001, 0x00000000, 0x00000000,
14-
0xfcffff0f, 0xffffffff, 0xf3ffffe1, 0x81fffffc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
14+
0xf0ff0f0f, 0xffffffff, 0xf0fffe61, 0x81ff3fcc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1515
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
1616
0xfffff800, 0xffffffff, 0xffffffff, 0x0300ffff, 0x0000280f, 0x00000004, 0x00000000, 0x00000000,
1717
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,

ext/mbstring/tests/mb_detect_encoding.phpt

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,82 @@ test($deStrings, $deEncodings);
233233

234234
test([$polish1, $polish2], ['UTF-32BE', 'UTF-32LE', 'UTF-16BE', 'UTF-16LE', 'UTF-8', 'ISO-8859-2']);
235235

236+
$czechStrings = [
237+
// Gotta love these Czech proverbs
238+
// "Some like girls, others like muffins." Truer words were never spoken.
239+
'Bezdomovec je doma všude.',
240+
'Bez práce nejsou koláče.',
241+
'Bez peněz do hospody nelez.',
242+
'Bližší košile nežli kabát.',
243+
'Boží mlýny melou pomalu, ale jistě.',
244+
'Co je dovoleno pánovi, není dovoleno kmánovi.',
245+
'Co je šeptem, to je s čertem.',
246+
'Co je v domě, není pro mě.',
247+
'Co je v domě, to se počítá.',
248+
'Co jsi z úst vypustil, ani párem koní nedostaneš zpět.',
249+
'Co můžeš udělat dnes, neodkládej na zítřek.',
250+
'Co nejde po dobrým, to půjde po zlým.',
251+
'Co oči nevidí, to srdce nebolí (a ruce neukradnou).',
252+
'Co se škádlívá, to se rádo mívá.',
253+
'Co se v mládí naučíš, ke stáru jako když najdeš.',
254+
'Co sis uvařil, to si sněz.',
255+
'Co tě nezabije, to tě posílí.',
256+
'Cvik dělá mistra.',
257+
'Co tě nepálí, nehas.',
258+
'Co na srdci, to na jazyku.',
259+
'Co nejde silou, jde rozumem.',
260+
'Čas všechny rány zahojí.',
261+
'Častá krůpěj kámen proráží.',
262+
'Čím výše vystoupíš, tím hlouběji padáš.',
263+
'Čím výše vystoupíš, tím větší rozhled.',
264+
'Čiň čertu dobře, peklem se ti odmění.',
265+
'Čistota – půl zdraví.',
266+
'Dal ses na vojnu, tak bojuj.',
267+
'Darovanému koni na zuby nehleď.',
268+
'Devatero řemesel – desátá bída.',
269+
'Dějiny píší vítězové.',
270+
'Dobré slovo i železná vrata otvírá.',
271+
'Dočkej času jako husa klasu.',
272+
'Drzé čelo lepší než poplužní dvůr.',
273+
'Dvakrát měř, jednou řež.',
274+
'Důvěřuj, ale prověřuj',
275+
'Hlad je nejlepší kuchař.',
276+
'Hlad má velké oči.',
277+
'Hloupý, kdo dává, hloupější, kdo nebere.',
278+
'Hněv je špatný rádce.',
279+
'Někdo rád holky, jinej zas vdolky.',
280+
'Volům kroky a jelenům skoky.',
281+
'Vrána k vráně sedá, rovný rovného si hledá.',
282+
'Všeho nechám, už tam spěchám.',
283+
'Všechna sláva, polní tráva.',
284+
'Všeho s mírou.',
285+
'Všechno zlé je pro něco dobré.',
286+
'Všude dobře, doma nejlépe.',
287+
'Vrána vráně oči nevyklove.',
288+
'Výjimka potvrzuje pravidlo.',
289+
'Vzduch – boží duch.',
290+
'Za dobrotu na žebrotu.',
291+
'Zadarmo ani kuře nehrabe.',
292+
'Zahálky jsa služebníkem, neběduj, žes hadrníkem.',
293+
'Z cizího krev neteče.',
294+
'Zítra je taky den.',
295+
'Zakázané ovoce chutná nejlépe.',
296+
'Zlaté slovo, které zůstane v ústech.',
297+
'Zvyk je železná košile.',
298+
'Žába močál vždy najde.',
299+
'Žádná píseň není tak dlouhá, aby jí nebyl konec.',
300+
'Žádný strom neroste do nebe.',
301+
'Žádný učený z nebe nespadl.',
302+
'Žízeň je věčná.'
303+
];
304+
$czechEncodings = [
305+
'UTF-8',
306+
'UTF-16',
307+
// 'Windows-1250', // Windows-1250 is not supported by mbstring
308+
// 'ISO-8859-2' // We are not able to accurately distinguish UTF-8 and ISO-8859-2
309+
];
310+
test($czechStrings, $czechEncodings);
311+
236312
echo "Done!\n";
237313

238314
?>

0 commit comments

Comments
 (0)