2013-02-25 123 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