Каков предпочтительный порядок кодирования символов для mb_detect_encoding() в PHP?

Каков предпочтительный порядок кодирования символов для передачи в качестве второго аргумента mb_detect_encoding( ),

Я спрашиваю об этом, потому что некоторые кодировки символов перекрывают другие, такие как ASCII, возвращаются для UTF (в некоторых случаях) и EUC-CN для gb2312, и любой из EUC-CN,EUC-JP,EUC-KR,EUC-TW, который появляется ранее в последовательность, переданная функции, возвращается для упрощенной китайской EUC-CN-совместимой строки.

Вот некоторые из них, которые я собрал, но я хочу сделать список максимально полным.

EUC-CN
EUC-JP
EUC-KR
EUC-TW
SJIS
ASCII
JIS
UTF-8
EUC-JP
EUC-CN
EUC-KR
EUC-TW
SJIS

Пожалуйста, помогите мне исправить заказ и сделать этот список максимально большим.

Изменить 1:

Все, что я хочу сделать, это конвертировать любую строку в utf8.

Изменить 2:

Учитывая приведенные ниже предложения, я хочу свести к минимуму возможность потери текста при преобразовании кодировки, потому что преобразованный текст - это единственное, на что опирается мой сайт. Так что, даже если решение, которое я использую, не является идеальным. Не могли бы вы продемонстрировать наиболее надежное решение?

1 ответ

Не существует настоящего предпочтительного порядка, который дает вам наиболее точный ответ.

Всегда будут строки, которые потенциально могут быть обнаружены и допустимы в нескольких наборах символов. mb_detect_encoding не может определить, какой из них правильный.

Единственный способ решить эту проблему - это:

  1. Имейте человека, который понимает язык, чтобы выбрать правильную кодировку.
  2. Потенциально проанализируйте фактический текст в вашей строке и "угадайте", что, скорее всего, будет правильным.

Во-вторых, я бы не знал готового варианта, но я могу представить, что такие вещи, как скорость появления символов, байесовские фильтры, нейронные сети и проверки по словарям, могут быть полезны;

Другие вопросы по тегам