Для клиента я создал XML-соединение, и это работает отлично, но в содержании есть символ типа "Ã ·", этот символ должен быть "ö". Я уже искал этот и другие форумы, но я не нашел решения. Даже preg_replace не работает.
Может ли кто-нибудь помочь мне?
Содержание: Preise sind ohne Mehrwertsteuer. "Смерть", "Освобождение Массена", "Spezifikationen und Gewichten kà · nnen keine Rechten abgeleitet werden".
Необходимо преобразовать в: Preise sind ohne Mehrwertsteuer. Штамп abgelesen Laufleistung, abgegeben Massen, Spezifikationen унд Gewichten können KEINE Rechten abgeleitet Werden.
Пробовал с сообщений, но не работал:
$content = $sitemap[0]->description;
// replace line breaks with <br />
$html = nl2br(htmlspecialchars($content));
$output=str_replace('÷', 'ö', $html);
echo $output;
А также
$content = $sitemap[0]->description;
// replace line breaks with <br />
$html = nl2br(htmlspecialchars($content));
$output=str_replace('÷', 'ö', $html);
echo $output;
Когда вы видите комбинацию символов, например, Ã · на экране, это неизменно, потому что у вас есть (где-то в конвейере обработки) контент, который закодирован в UTF-8, но который считывается некоторым программным компонентом, который считает, что он закодирован в Latin-1 (или что-то подобное, например, Windows CP1252).
Проблема заключается в том, чтобы проследить это через конвейер обработки, чтобы выяснить, где произошла ошибка. Это может быть на завершающей стадии отображения вывода, или это может происходить раньше. Вам нужно проследить данные на всех этапах обработки, чтобы выяснить, где это происходит, и в точке, где происходит "недоразумение", изменить конфигурацию одного из недокомментирующих компонентов, чтобы согласовать кодировку символов используются.
Редактировать # 2: я почти на 100% убежден, что ваш клиент действительно вводит правильный символ и записывается в файл под другим методом кодирования, и это вполне может обеспечить способ, которым стандартная кодировка сервера установлена на, Я столкнулся с " точной " проблемой/проблемой до и не мог изменить настройки сервера и должен был прибегнуть к поиску и замене символов перед записью в файл.
Вы можете добиться этого, используя str_replace()
.
<?php
$replace='k÷nnen';
$new=str_replace('÷', 'ö', $replace);
echo $new;
будет эхо können
Я протестировал это, и он сработал, минус [0]->description
так как я не знаю, с чего тянется контент.
<?php
$sitemap = "Preise sind ohne Mehrwertsteuer. An die abgelesen Laufleistung , abgegeben Massen, Spezifikationen und Gewichten k÷nnen keine Rechten abgeleitet werden.";
// $content = $sitemap[0]->description; // replace line breaks with <br />
$content = $sitemap; // replace line breaks with <br />
$html = nl2br(htmlspecialchars($content));
$output=str_replace('÷', 'ö', $html);
echo $output;
?>