【问题标题】:utf-8 character set, 7bit encoding, PHP adding strange charactersutf-8 字符集,7bit 编码,PHP 添加奇怪字符
【发布时间】:2013-02-25 06:31:12
【问题描述】:

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

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

展览 A:

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

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

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

下面是产生版权符号和上面带有“尖锐”符号的 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 = 数组( 'type' => urlencode($type), '活动' => urlencode($活动), '输入' => urlencode($输入) );

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

【问题讨论】:

  • 您的 PHP 脚本本身是 UTF-8 吗?如果不是,则您传递的是非 UTF8 字符,然后期望服务器了解它是什么。
  • 你试过utf8_decode吗?
  • 嘿伙计们...我不会对 php 编码做任何事情...我将添加 php...我不确定我应该如何处理 php 以进行正确编码/解码。
  • 查看utf8_encode 了解utf8 的工作原理。除非您指定 utf8 输出,否则您的输出不会被转换为它,因此需要对其进行解码。
  • 仅供参考,我对编码知之甚少,所以你们必须帮助我了解该怎么做...

标签: php encoding utf-8 7-bit


【解决方案1】:

详述my comment

$screwed = '©';

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

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

【讨论】:

  • 谢谢,我正在尝试解码以确定它何时被搞砸了,我一开始并没有意识到它始终是一样的。
  • 好的,我会试试这个并告诉你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 2014-11-19
相关资源
最近更新 更多