2

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

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

展品 A:

编码设置

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

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

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

开始

这是产生版权符号和上面带有“acute”符号的 A 的代码:

                            © 2012 H

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

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

第一篇文章:

在此处输入图像描述

第二个帖子:

在此处输入图像描述

第三个帖子:

在此处输入图像描述

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

编辑:

这是相关的PHP:

  1. 从 xml 响应中获取 html:

    $html = (string)$data;

  2. 替换一些东西:

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

  3. 将新的 HTML 放入 xml post 变量中:

    $input = ''.$newHTML.'';

  4. URL对其进行编码:

    $formatted = urlencode($input);

  5. 通过 curl 发布:

    $postVariables = array( 'type' => urlencode($type), 'activity' => urlencode($activity), 'input' => urlencode($input) );

    $rawResponseString = post_url($urlBase, $postVariables); 打印 $rawResponseString;

4

1 回答 1

2

详细说明我的评论

$screwed = '©';

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

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

于 2013-02-25T08:04:59.727 回答