我想知道如何清理MS Word的特殊字符,例如m和n-dashes以及引号?
我经常发现自己从Word复制客户端内容并粘贴到静态HTML页面,但内容最终会出现奇怪的字符,因为特殊字符未转换为正确的ACSII代码,因此显示为乱码文本.(对于这些基本网站,我使用的是Dreamweaver.)
当客户端将Word中的内容复制到仅文本字段(主要是textareas)时,我看到了很多类似的问题.当我将它放入PDF(通过PHP)或它显示在页面上时,它也会出现乱码.
你怎么处理这个?您使用的是清洁服务或程序吗?
关于客户在textareas中发布Word中的复制/粘贴文本:
确保客户端以任何特定编码发送文本的最可靠方法(因此希望从CP-1252 [或任何Word使用]进行任何转换)是将accept-charset="..."属性添加到您<form>的所有s.例如:
<form ... accept-charset="UTF-8">
...
</form>
Run Code Online (Sandbox Code Playgroud)
大多数浏览器都会遵守这一规定,并确保在访问您的网站之前将任何"特定于字的"字符转换为适当的字符集.
一旦无效文本到达您的网站,您可以做的很少,可以做到可靠地修复它,因此最好只检查所有输入是否在您使用的任何字符集中有效,并丢弃任何具有无效文本的请求.这是必要的accept-charset,因为毫无疑问,有一些客户会忽略它.
小智 6
您可以使用preg_replace函数调用从字符串中删除单词或其他字符的所有特殊字符
preg_replace('/[^\x00-\x7F]+/', '', $str);
Run Code Online (Sandbox Code Playgroud)
注意在各处指定编码并使用 UTF-8,那么那些“特殊”字符应该可以正常存在。但是,一旦它们经历了无法代表它们的编码,它最初是哪个字符的信息就会丢失,因此无法修复(除了一些特定但可能非常常见的情况,例如在 Cp1252 和 ISO 之间切换) 8859-1)。