2013-02-14 176 views
0

當我從代碼中的Word新聞文章中抓取標題並將它們作爲電子郵件傳遞時,標點符號有點受到損壞。PHP字符編碼問題

例如"TAMAGOTCHI P’S LOVE & MELODY SET"作爲"TAMAGOTCHI P’S LOVE & MELODY SET"出現。

任何想法如何防止這種情況?

讓我知道你是否需要查看我目前使用的特定代碼。 (我真的不知道,如果這是一個WordPress的問題,或者PHP的問題。

編輯 什麼情況是,這個稱號是通過查詢字符串傳遞給一個形式。然後,當表單提交,我從表單字段中的字符串並通過電子郵件發送。

所以我想我需要的HTML或者解碼之前,我將它傳遞到表單字段,要不然之前我發電子郵件。

EDIT 2 奇怪,所以我仔細看了一下代碼,我已經在做一個urldecode,然後我將值傳入第E型場

jQuery('#product_name').val("<?php echo urldecode(strip_tags($_GET['pname'])); ?> 

有一些默認的編碼時序列化(阿賈克斯formhandler)發生

var dataString = $(this).serialize(); 

編輯3 OK原來的代碼是比較複雜的。標題也會在它打到表單之前傳遞給某種類型的wordpress會話。我會弄清楚我需要將urldecode放在哪裏。謝謝!

+1

它沒有損壞。這是HTML編碼的報價。您可以檢查每個階段以查看編碼發生的位置。當它出來的數據庫,當WP交給電子郵件等... – 2013-02-14 16:48:44

+0

我想要un-html編碼它(html解碼?)。我會在PHP中搜索如何做到這一點,但請告訴我,如果這是你可能能夠分享的東西! – 2013-02-14 16:52:58

+1

試試http://www.php.net/manual/en/function.html-entity-decode.php – 2013-02-14 16:55:56

回答

1

這是一個WordPress的「功能」,我可以沒有。

這裏有一個下正骯髒的方法來獲取更換花哨的報價(或其他實體):

我們可以整合更深,掛接到the_title,如果你想這同去實體功能整個網站。此代碼塊將屬於您的主題的functions.php文件。

function reform_title($title, $id) { 
    $title = str_replace('&#8217', "'", $title); 
    return $title; 
} 
add_filter('the_title', 'reform_title', 10, 2); 
+1

啊,會討厭爲每個可能的字形做這個。這會工作嗎? mb_convert_encoding($ string,「UTF-8」,「HTML-ENTITIES」); – 2013-02-14 16:55:02

+0

@MaxHodges這會讓你更接近:'$ title = html_entity_decode($ title,ENT_QUOTES);'但我認爲它並不涉及所有實體。 – 2013-02-14 17:04:03

+0

發佈了另一個編輯(編輯2)以提問。仍然不明白髮生了什麼,但可能會接近... – 2013-02-14 17:08:44

0

林真的不知道關於WordPress,但問題本身它,它出來作爲URLEncode的,而不是一個UTF-8或其他編碼的文本。

你有兩個選擇

  1. 當您收到的文字,你永遠不會把它恢復正常編碼(當你訪問$ _GET或$ _POST變量,這是奇怪的,通常是由PHP DE-編碼)

  2. 您正在使用urlencode()函數解析消息。

+0

請參閱編輯問題! – 2013-02-14 17:00:55