Есть ли способ точно определить минимальное количество байтов, необходимое для символа в определенной кодировке? Как одна из кодировок, поддерживаемых расширением mbstring. Значение будет 1 для UTF-8, 2 для UTF-16 и т. д.
Я не хочу получать длину определенной строки или символа.
Я хочу знать минимальный размер символа, поддерживаемый данной кодировкой, в соответствии с ее спецификацией.
В настоящее время я использую этот код:
<?php
function flawed_detection($encoding)
{
// I use 'a' in the hope that this char need the least number of bytes in all the supported encodings
return strlen(mb_convert_encoding('a', $encoding, 'UTF-8'));
}
foreach (mb_list_encodings() as $encoding) {
echo "$encoding: ", flawed_detection($encoding), "\n";
}
Частичный вывод:
...
UTF-16LE: 2
UTF-8: 1
UTF-7: 1
UTF7-IMAP: 1
ASCII: 1
EUC-JP: 1
...
Но я не уверен, какой "правильный" символ использовать. Если когда-либо есть один.
редактирование: я протестировал метод грубой силы со всеми символами от 0 до U+10FFFF во всех кодировках, и результаты точно такие же, как и с моей функцией finally_not_so_flawed_detection (с символом 'a' или с пробелом) :р