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

2022-08-30 17:09:44

我有一个带有文本区域的表单。用户输入存储在数据库中的文本块。

有时,用户会从 Word 粘贴包含智能引号或短划线的文本。这些字符在数据库中显示为:“”、“™”、“””

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

我在PHP工作。

更新:感谢到目前为止所有伟大的回应。Joel网站上关于编码的页面非常翔实:http://www.joelonsoftware.com/articles/Unicode.html

关于我的环境的一些注意事项:

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

在这些页面上,智能引号和短划线显示为带有问号的钻石。

溶液:

再次感谢您的回复。解决方案是双重的:

  1. 确保数据库和 HTML 文件已显式设置为使用 UTF-8 编码。
  2. 请代替 使用 。htmlspecialchars()htmlentities()

答案 1

这听起来像是一个Unicode问题。乔尔·斯波尔斯基(Joel Spolsky)在这个话题上有一个很好的起点:http://www.joelonsoftware.com/articles/Unicode.html


答案 2

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

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

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

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

我遇到了类似的问题,添加标签对我有用。<meta>


推荐