Я использую функцию для определения значения Юникода в десятичном формате для разных бенгальских символов. Функция:
function uniord($u) {
$k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8');
$k1 = ord(substr($k, 0, 1));
$k2 = ord(substr($k, 1, 1));
return $k2 * 256 + $k1;
}
Это работает для всех бенгальских персонажей, кроме ড়
значение Юникода 09DC в шестнадцатеричном и 2524 в десятичном виде. Это прекрасно работает, когда я беру этот символ из поля console / textarea.such как:
$data = $_POST['data'];
echo uniord($data);
Но при использовании этого символа из переменной .such as отображается другое значение Юникода:
$data_one = 'ড়';
echo uniord($data_one);
это обеспечивает Unicode значение 09A1 в шестнадцатеричном или 2465 в десятичном виде, что является другим похожим словом, но не моим значением символа желания.
Как это решить. Спасибо
U + 09DC имеет каноническое разложение как U + 09A1 U + 09BC. Похоже, ваш текстовый редактор сохраняет текст с помощью разложенная нормальная форма. Посмотрите, можете ли вы изменить настройки, чтобы сохранить их, используя составленную обычную форму, или попробуйте использовать другой текстовый редактор.
Или используйте escape-коды: "\xe0\xa7\x9c"
Других решений пока нет …