Php 将cp850转换为utf字符Ð;

Php 将cp850转换为utf字符Ð;,php,string,character-encoding,Php,String,Character Encoding,我需要将特殊字符(在本例中为Ð字符)从cp850转换为unicode,但我无法使用mb_convert_编码。 在西班牙语中,正确的转换应该是从Ð到ñ,但函数mbÐconvert_enconding('Ð','utf-8')返回Ã 你知道为什么会这样吗 提前感谢。您需要传递源代码: print mb_convert_enconding('Ð', 'utf-8', 'CP850'); 如果不这样做,默认顺序将用于尝试猜测原始编码,并且通常首先检测UTF8和/或拉丁语1。如果将UTF8_encod

我需要将特殊字符(在本例中为Ð字符)从cp850转换为unicode,但我无法使用mb_convert_编码。 在西班牙语中,正确的转换应该是从Ð到ñ,但函数mbÐconvert_enconding('Ð','utf-8')返回Ã

你知道为什么会这样吗


提前感谢。

您需要传递源代码:

print mb_convert_enconding('Ð', 'utf-8', 'CP850');
如果不这样做,默认顺序将用于尝试猜测原始编码,并且通常首先检测UTF8和/或拉丁语1。

如果将UTF8_encode()应用于已存在的UTF8字符串,它将返回乱码UTF8输出

我做了一个函数来解决所有这些问题。它被称为
编码::toUTF8()

您不需要知道字符串的编码是什么。它可以是拉丁文1(iso 8859-1)、Windows-1252或UTF8,或者字符串可以混合使用它们<代码>编码::toUTF8()将所有内容转换为UTF8

用法:

require_once('Encoding.php'); 
use \ForceUTF8\Encoding;  // It's namespaced now.
$utf8_string = Encoding::fixUTF8($garbled_utf8_string);
下载:

示例:

echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
将输出:

Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football

我已经将函数(forceUTF8)转换为一个名为Encoding的类上的静态函数族。新函数是
Encoding::toUTF8()

请提供有关解决方案的更多信息,而不仅仅是一个简单的代码答案。很抱歉回答太晚。谢谢你的回答,但这对给出的示例不起作用。通过不同的功能测试,字符保持不变。也许扩展这个例子可以奏效。我正在尝试从ACUÐA转到ACUÐA。再次感谢。感谢您的评论,但这并没有解决问题。也许扩展这个例子可以奏效。我正在尝试从ACUÐA转到ACUÐA。再次感谢。我不确定我是否理解这个问题。如果您试图转换编码,mb_convert_编码应该已经可以工作了。如果原始字符串被错误地编码为不支持该字符的编码,那么您唯一的选择就是用str_replace和对应数组逐个替换它们。