utf-8字符集,7位编码,PHP添加奇怪的字符

时间:2013-02-25 06:31:12

标签: php encoding utf-8 7-bit

对不起,我的头衔不是更好,但我甚至不确定如何对这个问题进行分类。我知道这与编码有关,但我不确定如何。

我正在为ESP做一个项目。他们的电子邮件是7位编码的,带有utf-8字符集(这对我来说真的没有意义)。

图表A:

encoding settings

我通过API获取html电子邮件文本。然后我使用PHP修改一些文本(通过str_replace),然后通过API发布新的html。

一切都很好,除非每次发帖,我都会收到一些奇怪的字符,即每次运行代码时都会添加另一个时髦的角色。

在我进行任何更改之前,这是电子邮件的受影响部分(这是“查看”模式,即浏览器将如何看到它):

start

以下是产生版权符号的代码和A上面带有“锐”符号的A:

                            © 2012 H

奇怪的是,除去上面带有“锐”符号的A的唯一方法是删除版权符号......不知何故它们是相关的。

每次我通过PHP发布到API时,我都会得到一些新的时髦角色,因此:

第一篇文章:

enter image description here

第二篇文章:

enter image description here

第3篇帖子:

enter image description here

太奇怪了......这是唯一不起作用的部分!请帮忙......这让我发疯了! : - )

修改

以下是相关的PHP:

  1. 从xml响应中获取html:

    $ html =(string)$ data;

  2. 替换一些东西:

    $ newHTML = str_replace($ oldExpiresString,$ newExpiresString,$ html);

  3. 将新HTML放入xml帖子变量中:

    $ input =''。$ newHTML。'';

  4. URLEncode it:

    $ formatted = urlencode($ input);

  5. 通过卷曲发布:

    $ postVariables = array(     'type'=>进行urlencode($型),     'activity'=>进行urlencode($活动),     'input'=>进行urlencode($输入) );

    $ rawResponseString = post_url($ urlBase,$ postVariables); print $ rawResponseString;

1 个答案:

答案 0 :(得分:2)

详细说明my comment

$screwed = '©';

echo html_entity_decode($screwed, ENT_COMPAT, 'ISO-8859-1');

返回“©”,将搞砸的多单字节HTML编码解码回 UTF-8编码文本。所以从这里你只需要将文本视为UTF-8编码(现在就是这样)。