Есть ли возможность написать свой собственный конвертер punycode в php без расширения intl? - PullRequest
0 голосов
/ 07 ноября 2011

У меня нет такого большого контроля над удаленным сервером для установки расширений, php 5.3.8. Но я заметил, что есть возможность разбить строку utf-8 с помощью pcre.

Так, например: preg_split('@@u','bücher',-1,PREG_SPLIT_NO_EMPTY);

дает: Array ( [0] => b, [1] => ├╝, [2] => c, [3] => h, [4] => e, [5] => r )

или для китайского слова: 中国 / 中华 дает: Array ( [0] => ńŞş, [1] => ňŤŻ, [2] => /, [3] => ńŞş, [4] => ňŹÄ )

(результаты отображаются не в Юникоде), но ясно, что можно разбить строку utf-8 без международных расширений, а затем (я думаю) должна быть возможность получать коды символов и выполнять вычисления их создать Ascii URL.

1 Ответ

0 голосов
/ 07 ноября 2011

Единственное, что вам нужно знать, - это битовые маски, которые сигнализируют о двойных, тройных, четырехбайтовых кодовых точках:

Таблица от http://en.wikipedia.org/wiki/UTF-8

Bits  Last Code Point  Octet 1  Octet 2  Octet 3  Octet 4

 7    U+007F           0xxxxxxx    -/-      -/-      -/-
11    U+07FF           110xxxxx 10xxxxxx    -/-      -/-
16    U+FFFF           1110xxxx 10xxxxxx 10xxxxxx    -/-
21    U+10FFFF         11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Я не говорю по php, но я вполне уверен, что можно найти существующий код, который использует показанные битовые маски для сканирования последовательности символов utf-8 без фактической ее интерпретации

...