我在将字符串从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);