2013-02-25 88 views
2

对不起,我的标题并不是更好,但我甚至不知道如何分类这个问题。我知道这与编码有关,但我不知道如何。utf-8字符集,7位编码,PHP添加奇怪字符

我正在做一个ESP项目。他们的电子邮件是7位编码的,具有UTF-8字符集(这对我来说并不合适)。

附件A:

encoding settings

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

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

这里是电子邮件的受影响部分之前,我做任何改动(这是在“视图”模式,即浏览器会怎么看它):

start

下面是生成的代码,版权符号和一个与它上面的“急性”符号:

      © 2012 H 

什么奇怪的是,只有这样,才能摆脱A的与“急性”符号上方是删除版权符号。他们有什么关系。

我每次发布到通过PHP的API,我得到了一些新的时髦人物,这样的:

第一后:

enter image description here

第二后:

enter image description here

第3期:

enter image description here

这很奇怪......这是唯一不工作的部分!请帮助......这让我疯狂!:-)

编辑:

以下是有关PHP:

  1. 获得从XML响应的HTML:

    $ HTML =(字符串)$的数据;

  2. 更换一些东西:

    $ newHTML = str_replace函数($ oldExpiresString,$ newExpiresString,$ HTML);

  3. 将新的HTML到XML POST变量:

    $输入= ''; '$ newHTML。'

  4. 的URLEncode它:

    $格式化=用urlencode($输入);

  5. 经由卷曲发表:

    $ postVariables =阵列( '类型'=>进行urlencode($型), '活动'=>进行urlencode($活性), '输入'=>进行urlencode( $ input) );

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

+0

你的PHP脚本是UTF-8本身吗?如果不是,你传递一个非UTF8字符,然后期望服务器明白它是什么。 – Alasdair 2013-02-25 06:38:47

+0

你有没有试过['utf8_decode'](http://www.php.net/manual/en/function.utf8-decode.php)? – Jon 2013-02-25 06:41:03

+0

嘿家伙......我没有做任何与PHP编码明智的......我会添加的PHP ......我不知道我应该用PHP做适当的编码/解码。 – richard 2013-02-25 06:41:42

回答

2

为了详细说明my comment

$screwed = '©'; 

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

这将返回 “©”,解码拧向上多单字节编码HTML回UTF-8编码文本。因此,从这里开始,您只需将文本看作是UTF-8编码(现在就是这样)。

+0

谢谢,我正在尝试解码什么时候它被搞砸了,我一开始并没有意识到它始终是一样的。 – Jon 2013-02-25 08:07:43

+0

好吧,我会试试这个,让你知道! – richard 2013-02-25 08:33:27