Я пытаюсь преобразовать строку из этого: «Ã ©» в это: «é». Это латинский иероглиф, но я не могу его сделать правильно. До сих пор я пробовал две функции, но ни одна из них не дает мне правильного результата.
$translation = 'Copà © rnico was Italian';
$translation = mb_convert_encoding($translation, 'utf-8', 'iso-8859-1'); //opt 1
$translation = iconv('utf-8', 'latin1', $translation); //opt 2
Я получаю эти данные из Api, поэтому не знаю, что происходит в базе данных. Это строка на испанском: Copérnico es italiano. Это данные из API: Copà © rnico - итальянский Это результат с $ translation = bin2hex ($ translation); 436f70c38320c2a920726e69636f206973204974616c69616e
Какой правильный путь? Привет.
Может это уже UTF-8 с плохими символами?
Возможный дубликат UTF-8 полностью
Если вы видите моджибаке, это означает, что вы не интерпретируете некоторые байты с использованием правильной кодировки. Проблема либо в том, что вы просто неправильно обрабатываете правильные байты, либо в том, что вы испортили данные, которые буквально выражают буквы «©». По данной информации невозможно узнать, что это такое. Начните с echo bin2hex($translation), чтобы увидеть, что байты содержит строка, на основе этого выясните, какая это кодировка, а затем выясните, какая кодировка у вас хочу.
@NaveedRamzan Да, и он добавляет больше символов: $ translation = utf8_encode ($ translation); Копернико был итальянцем
@deceze Я получаю эти данные из Api, поэтому не знаю, что происходит в базе данных. Это строка на испанском языке: Copérnico es italiano Это данные из API: Copérnico is Italian Это результат с $ translation = bin2hex ($ translation); 436f70c38320c2a920726e69636f206973204974616c69616e Я не могу понять, что это за кодировка, поэтому любые рекомендации отсюда были бы отличными. Спасибо.
Поместите эту информацию в свой вопрос.
Я нажал кнопку «Открыть», но я не думаю, что он дойдет до полного открытия. Вам нужно выяснить, что написало неправильно и почему, прежде чем пытаться исправить это здесь. Только зная точное неправильное преобразование, можно дать разворот.






У меня была такая же проблема раньше, и этот вариант
$translation = iconv('utf-8', 'latin1', $translation); //opt 2
work verry well.
Your problem is `Copà © rnico был итальянцем` is not the same than `Copà © rnico был итальянцем`.
Поэтому, когда вы пытаетесь преобразовать функцию iconv, видите 2 неправильных символа UTF-8, потому что de пробелы - это не то же самое "Ã ©" (2 недопустимых символа UTF-8 и 2 пробела), чем "Ã ©" (1 действительный символ UTF-8)
Вы пробовали
utf8_encode()?