2011-10-29 37 views
2

如果我有™被轉換爲「¢DOM文檔的XPath

<p id='test'>TEST&trade;</p> 

我用

document.getElementById('test').innerHTML; 

到HTML傳遞給PHP函數在那裏提取所有使用DOM文檔的文本節點和XPath。

當PHP獲取內容&trade;被轉換爲™。我運行它通過XPath和文本節點回來爲:

TESTâ„ ¢ 

我不知道什麼錯誤,或者如果有辦法解決這個問題,無論是在JavaScript的一側,它通過&trade;而不是™。

任何幫助表示讚賞。

回答

1

您的值是您的變量正在通過TM字符傳遞,而不是&trade;,在PHP中通過htmlentities()運行應該照顧它。

+0

這也行不通,它只是返回⢠– eagle12

0

你需要比說「回來」更精確。這個TM似乎是用UTF-8編碼編寫的,並且相同的字節被某些沒有意識到它們採用UTF-8編碼的東西讀取,並假設它們是Latin-1或類似的。爲了解決這個問題,你需要仔細考慮編寫字符的軟件配置和讀取它的軟件。

0

邁克爾說的是真的;此外,您應該知道,XML處理器基本上需要將字符實體(如&tm;)轉換爲其實際字符值,並且(幾乎)將總是生成具有用某些主要字符集編碼的字符的輸出。這需要採取英勇的措施來防止這種情況發生,而且通常不是一個「好主意」。所以你應該放棄這樣做的嘗試,我的猜測是,通過確保你傳遞HTML的函數被告知將它解釋爲utf-8而不是其他字符集(它可能只是系統默認)。