【问题标题】:Conversion from ISO-8859-2 to UTF-8从 ISO-8859-2 到 UTF-8 的转换
【发布时间】:2014-01-01 12:46:41
【问题描述】:

我正在尝试将以下字符串从 ISO-8859-2 转换为 UTF-8,但转换不正确。

$content = 'Mieszkanie dla Młodych. Od dziś kredyty z pomocą państwa';
$xy = utf8_encode($content);
echo $xy;
Output - Mieszkanie dla MÅodych. Od dziÅ kredyty z pomocÄ paÅstwa

我无法理解出了什么问题。 任何一位转换专家都可以请您分享一些想法。

我可能在这里遗漏了一些东西。

谢谢

更新:- 我尝试了 iconv,但也没有用

iconv("ISO-8859-2", "UTF-8", $content);
iconv("ISO-8859-2", "UTF-8//TRANSLIT", $content);
iconv("ISO-8859-2", "UTF-8//IGNORE", $content);

Output - Mieszkanie dla MĹodych. Od dziĹ kredyty z pomocÄ paĹstwa

【问题讨论】:

  • 使用iconv()mb_convert_encoding(); utf8_encode() 专门用于 ISO-8859-1 到 UTF-8
  • 谢谢@MarkBaker 我试过 iconv("UTF-8", "ISO-8859-2//TRANSLIT", $content);但这也行不通。做一些不同的事情。
  • 反转字符集的顺序:第一个参数是输入(来自)字符集,第二个是输出(到)字符集
  • 您确定您的输入字符串 ($content) 采用 ISO-8859-2 编码?

标签: php unicode utf-8


【解决方案1】:

使用iconv进行转换。它提供了OriginalTRANSLITPlainIGNORE。我想你需要尝试一切才能得到你想要的输出

<?php
$text = "This is the Euro symbol '€'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("ISO-8859-2//TRANSLIT", "UTF-8" ,$text), PHP_EOL;
echo 'IGNORE   : ', iconv("ISO-8859-2//IGNORE","UTF-8",  $text), PHP_EOL;
echo 'Plain    : ', iconv("ISO-8859-2","UTF-8",  $text), PHP_EOL;

?>

【讨论】:

  • 我猜我们正在谈论 ISO-8859-2。
  • 嗨 Freak - 我也试过了,但没有运气。是的,我确定它是 ISO-8859-2 Estshy。提前谢谢您...不知道出了什么问题...有关更多信息,这是 RSS - www.money.pl/rss/main.xml,它采用 ISO-8859-2 格式。
  • 是的,这绝对是 UTF-8。 XML 文件默认为 UTF,除非有 Content-Type:...charset&lt;?xml encoding 另有说明。该 RSS 文件两者都没有。
  • 嗨 Estshy/bobince - 如果您确实查看源代码,您会在该文件上看到 。谢谢。
  • 这很奇怪,我现在已经看到了有和没有 8859-2 prolog 的情况。不知道是什么让它变化。当有 编码参数时,iconv("ISO-8859-2", "UTF-8", $content) 将是转换为 UTF-8 的正确方法。然而到目前为止,最好的方法是使用适当的 XML 解析器,它会自动处理编码序言。
猜你喜欢
  • 2012-12-22
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
相关资源
最近更新 更多