如何在字符串中转换Word智能引号和em破折号?

Glo*_*ish 25 php unicode smart-quotes

我有一张带有textarea的表格.用户输入存储在数据库中的文本块.

有时用户会粘贴包含智能引号或emdashes的Word中的文本.这些字符在数据库中显示为:",",","

我应该在输入字符串上调用什么函数将智能引号转换为常规引号,将emdashes转换为常规短划线

我在PHP工作.

更新:感谢迄今为止所有出色的回复.Joel网站上关于编码的页面非常有用:http://www.joelonsoftware.com/articles/Unicode.html

关于我的环境的一些注释:

MySQL数据库使用UTF-8编码.同样,显示内容的HTML页面通过显式设置元内容类型使用UTF-8(Update :).

在这些页面上,智能引号和emdashes显示为带问号的钻石.

解:

再次感谢您的回复.解决方案有两个方面:

  1. 确保将数据库和HTML文件显式设置为使用UTF-8编码.
  2. htmlspecialchars()而不是 htmlentities().

the*_*ear 15

这听起来像是一个Unicode问题.Joel Spolsky在这个话题上有一个很好的起点:http://www.joelonsoftware.com/articles/Unicode.html


Ate*_*ral 9

mysql数据库使用UTF-8编码.同样,显示内容的html页面使用UTF-8.

HTML的内容可以是UTF-8,是的,但你是否明确地将HTML页面的内容类型(编码)(通过PHP生成?)设置为UTF-8?尝试返回HTML Content-Type标题"text/html;charset=utf-8"或向<meta>HTML 添加标记:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
Run Code Online (Sandbox Code Playgroud)

这样,提交给PHP的数据的内容类型也将是相同的.

我有一个类似的问题,并添加<meta>标签为我工作.