使用PHP标准化多个带重音的unicode字符

时间:2016-07-10 05:49:23

标签: php unicode unicode-normalization

我想规范化一组unicode字符。但是,当字符具有多个重音时,规范标准化不会按预期工作。 我使用的测试代码如下:

<?php
function print_codes($s) {
    $chars = preg_split('//u', $s, -1, PREG_SPLIT_NO_EMPTY);
    echo implode(' ', $chars) . '<br>';
}

$k1 = 'කො';
$k2 = 'කො';
$k3 = 'කාෙ';

print_codes($k1);
print_codes($k2);
print_codes($k3);

echo '*Normalizer*<br>';
$k1 = normalizer_normalize($k1, Normalizer::FORM_C);
$k2 = normalizer_normalize($k2, Normalizer::FORM_C);
$k3 = normalizer_normalize($k3, Normalizer::FORM_C);

print_codes($k1);
print_codes($k2);
print_codes($k3);
?>

请注意,k3未按预期正常化。

P.S。虽然这三个变量可能看起来具有相同的字符,但它具有不同的重音排序,请复制并粘贴到启用了unicode的编辑器上。

0 个答案:

没有答案