首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在字符串中转换单词智能引号和em破折号?

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

Stack Overflow用户
提问于 2008-10-06 19:22:33
回答 13查看 30.9K关注 0票数 25

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

偶尔,用户会从包含智能引号或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()
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-10-06 19:24:28

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

票数 15
EN

Stack Overflow用户

发布于 2008-10-07 16:02:19

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

HTML的内容可以是UTF-8,是的,但是您是否显式地设置了HTML页面的内容类型(编码)(通过PHP生成)?也去了八号?尝试返回Content-Type头部的"text/html;charset=utf-8"或添加<meta>标记到您的HTML:

代码语言:javascript
运行
复制
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

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

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

票数 9
EN

Stack Overflow用户

发布于 2008-10-06 19:30:16

听起来真正的问题是数据库没有使用与页面相同的字符编码(可能应该是UTF-8)。在这种情况下,如果任何用户提交一个非ASCII字符,您可能会在数据库中看到奇怪的字符。找到并修复其中的一些(卷引号和em破折号)并不能解决真正的问题。

下面是一些关于将数据库迁移到另一个字符编码的信息,至少对于MySQL数据库是这样的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/175785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档