Мне нужно было работать с Facebook SDK, поэтому с некоторой помощью я написал сценарий, который может найти информацию о человеке. Но если в его имени будет диакритический характер, он будет искажен, я попытался установить кодировку в файлах SDK, но это не поможет.
Например, если имя René Beneš, это будет RenĂ © BeneĹ.
Вы можете мне помочь?
СпасибоCharset with Facebook SDK
ответ
Я могу описать на уровне персонажей то, что здесь происходит - я надеюсь, что это поможет вам приблизиться к решению. Вы, по-видимому, получаете данные в кодировке UTF-8, но ваше программное обеспечение интерпретирует его как ISO-8859-2 (ISO Latin 2, «Восточноевропейское») кодирование. Например, буква «é» (U + 00E9) представляет собой два байта 0xC3 0xA9 в UTF-8. Если байты неправильно интерпретируются в соответствии с ISO-8859-2, то 0xC3 становится Ă, а 0xA9 становится ©.
Так что вы должны попытаться заставить ваше программное обеспечение читать и обрабатывать данные в UTF-8 или перекодировать его из UTF-8 в кодировку, которую вы используете.
1-ый пример - PHP
Я предлагаю вам использовать функцию PHP под названием str_replace():
$name = 'René Beneš';
$replace = array('é','š');
$replaced = array('e','s');
// output = Rene Benes
echo str_replace($replace, $replaced, $name);
Вы можете узнать больше о том, что функции на official PHP website - str_replace().
Кроме того, подробная информация и коды HTML о специальных символах доступны на Special Characters in HTML.
второй пример - HTML
Попробуйте заменить:
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type" />
между <head></head>
разделе.
Да, я знаю об этой функции, но я знаю, что есть какой-то способ сделать это без нее, потому что много страниц, в том числе и у этой диакритики. –
Я уверен, что utf8_decode и/или utf8_encode отлично подойдут вам.
Да, я нашел проблему, как вы сказали, у меня есть данные в UTF-8, но на моей странице была кодировка windows-1250, когда я попытался изменить ее на utf-8, все было в порядке. Спасибо, мужик –