我知道这’
会在HTML文档中产生撇号.
我也知道option shift right bracket
在Mac上只会产生一个’
角色.
是否有编写代码的最佳实践,例如,我应该写
<b>The User’s Forum</b>
Run Code Online (Sandbox Code Playgroud)
要么
<b>The User’s Forum</b>
Run Code Online (Sandbox Code Playgroud)
(请注意,通过使用键盘快捷键,我可以键入’
而不是'
上面)
令我感到震惊的是后者(使用键盘快捷键)更加健壮,因为它不可能显示原始HTML,例如,它不会被转义.
另一方面,特殊的'字符在某些浏览器中可能无法读取,也许(?).
任何人都有这方面的最佳做法?
我的帖子下面询问了什么是卷曲引号以及为什么我的应用程序无法使用它们,我现在的问题是如何在我的程序遇到它们时替换它们,我怎样才能在C#中执行此操作?他们是特殊人物吗?
谢谢
我有一张带有textarea的表格.用户输入存储在数据库中的文本块.
有时用户会粘贴包含智能引号或emdashes的Word中的文本.这些字符在数据库中显示为:",",","
我应该在输入字符串上调用什么函数将智能引号转换为常规引号,将emdashes转换为常规短划线?
我在PHP工作.
更新:感谢迄今为止所有出色的回复.Joel网站上关于编码的页面非常有用:http://www.joelonsoftware.com/articles/Unicode.html
关于我的环境的一些注释:
MySQL数据库使用UTF-8编码.同样,显示内容的HTML页面通过显式设置元内容类型使用UTF-8(Update :).
在这些页面上,智能引号和emdashes显示为带问号的钻石.
解:
再次感谢您的回复.解决方案有两个方面:
htmlspecialchars()
而不是
htmlentities()
.我有一个使用基于Javascript的规则引擎的应用程序.我需要一种方法将常规直引号转换为卷曲(或智能)引号.只做一个string.replace
for 是很容易的["]
,只有这只会插入一个卷曲引用的情况.
我能想到的最好的方法是用左边的卷曲引号替换第一次出现的引用,用左边的代码替换每个其他的引用,其余的右边卷曲.
有没有办法使用Javascript实现这一目标?
当我导出到HTML时,如何让Emacs组织模式创建正确的印刷标记,包括将直引号转换为智能引号("引号")并将连字符转换---
为m-dashes —
?
我正在从表单中将一些数据插入到数据库中.我正在使用addslashes
以逃避文本(也试过mysql_real_escape_string
相同的结果).
常规报价已转义,但其他一些报价则没有.例如,字符串:
荷马的血液成为Moe新啤酒的秘密成分.
转换为:
荷马的血液成为Moe新啤酒的秘密成分.
我不认为卷曲引用无关紧要,但只有这个文本被插入到数据库中:
荷马的血液成为萌的秘密成分
所以PHP认为卷曲的引用很好,但MySQL正在丢失字符串.MySQL虽然没有给出任何错误.
我有一个MySQL表,其中120,000行以UTF-8格式存储.有一个字段,产品名称,包含带有许多重音的文本.在将其转换为友好的URL形式(ASCII)后,我需要使用相同的名称填充第二个字段.
由于PHP不直接处理UTF-8,我使用:
$value = iconv ('UTF-8', 'ISO-8859-1', $value);
将名称转换为ISO-8859-1,然后是一个巨大的strstr语句,用其非重音等效项替换任何重音字符(例如,à变为a).
但是,原始文本名称是使用智能引号输入的,而且每当遇到一个时,iconv会发出窒息 - 我得到:
Unknown error type: [8] iconv() [function.iconv]: Detected an illegal character in input string
为了在使用iconv之前删除智能引号,我尝试使用三个语句,如:
$value = str_replace('’', "'", $value);
(是UTF-8智能单引号的原始值)
因为文本文件太长,所以这些str_replace会导致脚本每次都超时.
在运行iconv之前,从UTF-8字符串中删除智能引号(或任何无效字符)的最快方法是什么?
或者,这个问题是否有更简单的解决方案?将具有多个重音符号(UTF-8)的名称转换为没有重音符号,拼写正确的ASCII格式的最快方法是什么?
我正在处理 LAMP Web 服务器。我有用户用来提交存储在 mysql 文本字段中的文本的表单。这些文本通常是从 Microsoft Office 产品中复制和粘贴的,因此我得到了很多巧妙的引语和短划线。如果我从数据库中检索它们并将它们显示在网页上,这些字符会正确显示,但我遇到问题的地方是使用 phpmailer 类在电子邮件中发送文本。我得到的东西看起来像这样: – (它应该是一个 emdash)。
可能很重要的一件事:如果我在 mysql 中拉出一个控制台并选择一个包含 emdash 或智能引号的字段,它将错误地显示在我的控制台上: – 但是,如上所述,如果我的 php页面(使用 PDO)选择字段并显示它,它将在浏览器中正确显示(在这种情况下作为 emdash)。
我不确定是否有办法在 phpmailer 中选择字符集,(也许是某个地方的简单设置?)或者是否有更好的方法来解决这个问题。不过,我想我应该清楚,“搜索和替换智能引号和短划线”不是我正在寻找的答案(希望这不是唯一的解决方案)。
我找到了这个信息:
我的php网页:utf-8
mysql客户端编码:latin1
mysql服务器编码:latin1
phpmailer字符集:iso-8859-1
有谁知道用他们的ASCII表亲替换MS Office智能引号的SQL命令?我正在使用Oracle数据库,并且字段的类型为varchar2
许多人可能经历过将Word中的某些文本复制到网站表单或其他内容,并且所有引号('),双引号(")和破折号( - )都会出现乱码.我相信引号称为"智能引号"或" Typographer的引号",但我不知道破折号的名称.是否有包含这些字符的类别?还有更多吗?
辨别此类别的功能:使用普通的qwerty键盘可访问,并且很容易在视觉上错误地使用其ASCII等效字符.
这个问题似乎正在处理同样的问题:如何在字符串中转换Word智能引号和em破折号? 也许,他们可能被称为"em破折号"?
smart-quotes ×10
php ×3
mysql ×2
quotes ×2
unicode ×2
utf-8 ×2
apostrophe ×1
ascii ×1
c# ×1
emacs ×1
html ×1
iconv ×1
iso-8859-1 ×1
javascript ×1
oracle ×1
org-mode ×1
phpmailer ×1
regex ×1
smartypants ×1
sql ×1
typography ×1