Как я могу узнать, является ли строка с кодировкой url UTF-8 или Latin-1 с PHP?

Я получаю данные с разных сайтов через URL. Параметры url кодируются url с помощью функции php urlencode() , но кодировка символов может быть UTF-8 или Latin-1.

Например, символ é , когда url-encoded из UTF-8 становится% C3% A9, но когда url-кодируется с латинского-1, он становится% E9.

Когда я получаю данные через url, я использую urldecode() а затем мне нужно знать, что такое кодировка символов, поэтому я в конечном итоге использую utf8_encode прежде чем вставлять их в базу данных MySQL.

Как ни странно, следующий код не работает:

 $x1 = 'Cl%C3%A9ment'; $x2 = 'Cl%E9ment'; echo mb_detect_encoding(urldecode($x1)).' / '.mb_detect_encoding(urldecode($x2)); 

Он возвращает UTF-8 / UTF-8

Почему это, что я делаю неправильно и как я могу узнать кодировку символов этой строки?

благодаря

Solutions Collecting From Web of "Как я могу узнать, является ли строка с кодировкой url UTF-8 или Latin-1 с PHP?"

mb_detect_encoding() обычно бесполезен со вторым параметром по умолчанию:

 <?php $x1 = 'Cl%C3%A9ment'; $x2 = 'Cl%E9ment'; $encoding_list = array('utf-8', 'iso-8859-1'); var_dump( mb_detect_encoding(urldecode($x1), $encoding_list), mb_detect_encoding(urldecode($x2), $encoding_list) ); 

… печатает:

 string(5) "UTF-8" string(10) "ISO-8859-1"