Проверьте unicode в PHP

Я использовал vi/vim для 25 + годы. Если Вы уже знаете некоторого редактора командной строки, то, возможно, Вы не должны изучать vi/vim. Но если Вы не знаете никаких других редакторов командной строки очень хорошо, стоит изучить это. Довольно легко быть продуктивным в vi/vim с небольшим усилием.

16
задан Török Gábor 29 August 2009 в 07:47
поделиться

6 ответов

На самом деле вам даже не нужно расширение mb_string:

if (strlen($string) != strlen(utf8_decode($string)))
{
    echo 'is unicode';
}

И чтобы найти кодовую точку данного символа:

$ord = unpack('N', mb_convert_encoding($string, 'UCS-4BE', 'UTF-8'));

echo $ord[1];
27
ответ дан 30 November 2019 в 16:42
поделиться

вы можете попробовать с помощью

mb_check_encoding($s,"UTF-8")

ссылка

5
ответ дан 30 November 2019 в 16:42
поделиться

Обычно вы делаете что-то вроде:

if (mb_strlen($ch) != strlen($ch)) ...

Я должен добавить: strlen считает байты, а mb_strlen считает символы (правильная обработка многобайтовых символов, что, я думаю, это то, что вы на самом деле речь идет скорее о юникоде, чем о юникоде - поскольку юникод также охватывает более сотни однобайтовых символов, неотличимых от ASCII)

2
ответ дан 30 November 2019 в 16:42
поделиться

Для символа Юникода ВСЕГДА будет установлен самый старший байт, независимо от того, какое значение имеет этот символ, является ли он частью многобайтового символа Юникода или чего-то еще. Вы не можете просто проверить, больше ли в строке байтов, чем символов, поскольку некоторые символы Юникода состоят только из одного байта. Если какой-либо символ в байтовом значении строки больше 127, эта строка содержит код Юникода.

1
ответ дан 30 November 2019 в 16:42
поделиться

Строки в PHP - это байтовые потоки, а не символьные потоки. На самом деле в PHP не может быть строк Unicode; Вам нужно закодировать свои символы с помощью некоторой кодировки. Если вы хотите охватить весь диапазон Unicode, наиболее очевидным выбором будет UTF-8.

Если вы хотите получить кодовую точку байтового потока, закодированного в utf-8, вы можете использовать эту библиотеку: http: // hsivonen.iki.fi/php-utf8/

Однако мне интересно, для чего это вам нужно? Скорее всего, вы сможете решить все свои проблемы, просто используя utf-8.

1
ответ дан 30 November 2019 в 16:42
поделиться

Спасибо, ребята .. Наконец-то я получил ответ, который искал.

Получил включаемый файл с http://hsivonen.iki.fi/php-utf8/ .

Следующий код решил мою проблему:

<?php
  require_once("utf8.inc");
  /*** create a unicode string ***/
  $s = "حملة إلا صلاتي";
  $out = utf8ToUnicode($s);
  for ($i=0;$i < strlen($s);$i++)
    echo dechex($out[$i]).".";
?>
1
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: