我在将字符串从cp1251转换为utf8时遇到问题…
我需要从数据库中获取一些名称,这些名称在cp1251中(我不是创建该数据库的人,所以我不能编辑它,但我确信这些名称是cp1251)。
数据库中的名字是这样的——“P?。”
我正在使用如下iconv函数将其转换为utf8:
iconv(“utf-8”、“cp1251//ignore”、$name)
我得到的结果是-“)?但前两个符号不正确…它应该是“hylétle___”…
所以我要做的最后一件事就是改变这两个符号。俄文字母“hyl”…我真的不知道怎么做…我试过使用preg_replace,但它不起作用……或者我没有正确使用它。
我很抱歉收到俄文信件,如果不出示,很难解释我需要什么。

最佳答案

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

$name = str_replace("\xD0\x3F", "\xD0\x98", $name);
echo iconv("UTF-8", "CP1251//IGNORE", $name);

10-08 10:54