php:从cp1251转换为utf8

我在将字符串从cp1251转换为utf8时遇到问题…

我需要从数据库中获取一些名称,这些名称都在cp1251中(我不是那个创建该数据库的人,所以我无法编辑它,但我确定这些名称是cp1251)…

数据库中的名字是这个 – “Р?РЅС,РμСЂРЅРμС,вциєрах…“
我正在使用iconv函数将其转换为utf8,如下所示:

iconv(“UTF-8”, “CP1251//IGNORE”, $name)

我在结果中得到的是 – “ ?нтернетвцифрах”(它是俄语),但前两个符号不正确……它应该是“Интернетвцифрах”……

所以我要做的最后一件事是以某种方式改变这两个符号“ ?”俄语字母“И”…我真的不知道怎么做…我试过使用preg_replace,但它不起作用……或者我没有正确使用它.

我很抱歉俄罗斯的信件,很难在不显示的情况下解释我的需求.

解决方法:

第一个字母输出不正确,因为在CP1251中没有使用存储UT的UTF-8编码所需的字节之一(确切地说是0x98).如果数据库已用问号替换98字节,则必须更改它在使用iconv之前回来:

$name = str_replace("\xD0\x3F", "\xD0\x98", $name);
echo iconv("UTF-8", "CP1251//IGNORE", $name);
上一篇:Ubuntu 下unzip 命令解压乱码


下一篇:php – 如何将带有HTML entites和无效字符的文本转换为UTF-8等效字符?