Я предполагаю, что XML не правильно UTF-8 закодирован. Пожалуйста, покажите байт в файле <shortest>
в необработанном файле ... Подозреваю, вы обнаружите, что они не являются закодированным символом. Если бы вы могли показать короткую, но полную программу, которая генерирует этот XML из допустимого ввода, это было бы очень полезно. (Предпочтительно сказать, какая платформа это тоже :)
EDIT: В этом файле происходит что-то очень странное. Ниже приведены значения шестнадцатеричных для "коротких" и "коротких" значений:
Короче: С3 96 72 77 69 63
Кратчайшими: EF BF BD 2E
В настоящее время "C3-96" является действительным UTF-8 для U + 00D6, который является «латинской заглавной буквы O с диарезисом», как вы хотите.
Однако EF BF BD является кодировкой UTF-8 для U + FFFD, которая является «символом замены» - определенно не, что вы хотите. (2E - это просто точка ASCII.)
Итак, это действительно действительный UTF-8 - но он не содержит символов, которые вы хотите. Опять же, вы должны изучить, что создал файл ...
Может быть, проблема метода я получаю сингл «Ö» с. Я использую $ firstname {0}, чтобы извлечь первый символ первого имени. Есть ли проблема с строками UTF-8? – individual8
Кажется, я использовал неправильную внутреннюю кодировку в своем PHP-скрипте. Изменил его на mb_substr ($ firstname, 0,1, 'UTF-8'), чтобы получить первый символ первого имени, и он работает. – individual8