我有一个带有文本区域的表格。用户输入存储在数据库中的文本块。
偶尔,用户会从包含智能引号或emdashes的Word中粘贴文本。这些字符在数据库中显示为:
我应该在输入字符串上调用什么函数来将智能引号转换为常规引号,并将emdashes转换为常规破折号?
我在PHP工作。
更新:感谢所有的伟大反应到目前为止。Joel网站上关于编码的页面内容非常丰富:http://www.joelonsoftware.com/articles/Unicode.html
关于我的环境的一些注意事项:
MySQL数据库使用UTF-8编码.同样,显示内容的HTML页面通过显式设置元内容类型来使用UTF-8 (Update:)。
在这些页面上,智能引号和emdashes显示为带有问号的菱形。
解决方案:
再次感谢你的回复。解决办法有两方面:
htmlspecialchars()而不是htmlentities()。发布于 2008-10-06 19:39:49
不幸的是,这是一个非常常见的问题,PHP对字符集的处理非常糟糕,这没有帮助。
我们所做的就是强迫文本通过iconv
// Convert input data to UTF8, ignore any odd (MS Word..) chars
// that don't translate
$input = iconv("ISO-8859-1","UTF-8//IGNORE",$input);//IGNORE标志意味着任何不能翻译的东西都会被丢弃。
如果附加字符串//忽略,则无法在目标字符集中表示的字符将被静默丢弃。
https://stackoverflow.com/questions/175785
复制相似问题