php: 从 cp1251 转换为 utf8

标签 php utf-8 preg-replace iconv cp1251

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

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

数据库中的名称是这样的 - "Р?РС,ернеС,РІ С†РёС„СЂР°С ..." 我正在使用 iconv 函数将它转换为 utf8,如下所示:

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

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

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

对于俄语字母,我很抱歉,如果不显示它们,真的很难解释我需要什么。

最佳答案

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

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

关于php: 从 cp1251 转换为 utf8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508429/

相关文章:

php - 应用 "this"jQuery,从sql数据库中删除php中的回显行

java - 如何在TableView中设置编码

php - 用PHP提取字符串中的第一个整数

youtube - youtube preg_replace链接不同

javascript - 自动滚动到 Magento 中的下一个选项

php - Facebook 社交评论插件无法链接到帖子内容

php - Symfony 翻译在产品中不起作用

php - json_encode 不工作 uft8 内容 php

Python:将 ascii 转换为 unicode 时遇到困难

PHP preg_replace 单词但如果单词前面有某些字符则不会