我想知道如何清理MS Word的特殊字符,例如m和n-dashes以及引号?
我经常发现自己从Word复制客户端内容并粘贴到静态HTML页面,但内容最终会出现奇怪的字符,因为特殊字符未转换为正确的ACSII代码,因此显示为乱码文本。 (对于这些基本网站,我使用的是Dreamweaver。)
当客户端将Word中的内容复制到仅文本字段(主要是textareas)时,我看到了很多类似的问题。当我把它放到PDF(通过PHP)或它出现在页面上时,它也会出现乱码。
你是如何处理的?您使用的是清洁服务或程序吗?
答案 0 :(得分:8)
关于客户在textareas中发布Word中的复制/粘贴文本:
确保客户端以任何特定编码发送文本的最可靠方法(因此希望从CP-1252 [或任何Word使用]进行任何转换)是将accept-charset="..."
属性添加到你所有的<form>
。 E.g:
<form ... accept-charset="UTF-8">
...
</form>
大多数浏览器都会遵守这一规定,并确保在访问您的网站之前,任何“特定于字词”的字符都会转换为相应的字符集。
一旦无效文本进入您的网站,您无法可靠地修复它,因此最好只检查所有输入是否在您使用的任何字符集中有效,并丢弃任何包含无效文本的请求。即使使用accept-charset
,这也是必要的,因为毫无疑问,有些客户会忽略它。
答案 1 :(得分:6)
您可以使用preg_replace
函数调用从字符串中删除单词或其他字符的所有特殊字符
preg_replace('/[^\x00-\x7F]+/', '', $str);
答案 2 :(得分:4)
注意在任何地方指定一个编码并使用UTF-8,然后那些“特殊”字符应该存活得很好。但是一旦他们经历了一个无法代表它们的编码,那么它最初的信息就会丢失,所以它无法修复(除了一些特定但很常见的情况,比如在Cp1252和ISO之间切换) 8859-1)。
答案 3 :(得分:2)
您可以尝试Demoroniser。
答案 4 :(得分:1)
确保将Word配置为使用UTF-8进行&#34;另存为...&#34; HTML。
这是选项&gt;单词选项&gt;高级&gt;网络选项&gt;编码
答案 5 :(得分:0)
如果它是一个只是文本的Word文件(即:没有图形,表格等),您可以尝试从Word中保存为HTML,将生成的HTML复制/粘贴到Dreamweaver中的文档中,然后使用Dreamweaver的“清理Word HTML“功能(在命令菜单下)。
作为替代方案,您可以尝试使用fix my HTML,但我没有亲自尝试使用Word文字,因此结果可能会有所不同。