Вам нужен только один вызов iconv
с правильной кодировкой для параметра $in_charset
.
$utf8Text = iconv($inputCharset, 'UTF-8', $text);
Вам необходимо знать входную кодировку. Там нет никакого способа обойти это. Укажите, что все входные данные должны соответствовать стандарту ISO-8859-1 или как вам удобнее. Кроме того, узнайте, что представляет собой кодировка вашего ввода (спросите автора, проверьте себя в редакторе, что угодно). В качестве альтернативы, требуется, чтобы входные данные указывали в какой-либо кодировке.
Кодировка не является черной магией. Вам просто нужно знать, в какой кодировке находится какой-либо текст и в какой кодировке вы хотите, чтобы он был. Затем используйте функцию, подобную iconv
, которая может аккуратно переводить символы из одной кодировки в другую. utf8_encode
и utf8_decode
переводятся между ISO-8859-1 и UTF-8. Их имена выбраны ужасно, поскольку они предполагают, что они могут автоматически переводить что угодно с UTF-8 и на него, но это не так.