对于一个客户,我做了一个XML耦合并且工作正常,但在内容中有一个像'÷'这样的字符,该字符必须是'ö'。我已经在这个和其他论坛上搜索过但我找不到任何解决方案。甚至preg_replace都无法正常工作。
有人可以帮帮我吗?
内容: Preise sind ohne Mehrwertsteuer。一个模特abgelesen Laufleistung,abgegeben Massen,Spezifikationen和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;
答案 0 :(得分:0)
编辑#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;
?>
答案 1 :(得分:0)
当你在屏幕上看到像÷这样的字符组合时,它总是因为你(在处理管道中的某个地方)以UTF-8编码的内容,但是正在被认为它的某个软件组件读取以Latin-1编码(或类似的东西,例如Windows CP1252)。
问题是通过处理管道追溯这一点以找出错误发生的位置。它可能处于显示输出的最后阶段,或者可能更早发生。您需要在所有处理阶段追溯数据以找出它出错的地方,并且在出现“误解”时,更改其中一个错误传达的组件的配置,以便就字符编码达成一致正在使用。