有没有可能在没有intl扩展名的情况下在php中编写我自己的punycode转换器?

时间:2011-11-07 11:38:16

标签: php punycode

我没有那么多控制远程服务器来安装扩展,php是5.3.8。 但我注意到有可能用pcre分割utf-8字符串。

例如: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] => ňŹÄ )

(结果来自非unicode显示),但显然可以在没有国际扩展的情况下拆分utf-8字符串,然后(我认为)应该可以获取字符代码并执行用它们计算来创建ascii url。

1 个答案:

答案 0 :(得分:0)

您需要知道的唯一事情是用于发出双字节,三字节,四字节代码点信号的位掩码:

来自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字符序列,而无需实际解释它