2011-10-29 35 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而不是其他字符集(它可能只是系统默认)。