Ste*_*eve 17 character-encoding
我有一个HTML表单,有些用户从MS Word复制/粘贴文本.当有单引号或双引号时,它们会被翻译成有趣的字符,例如:
'™和â™
数据库列是collation utf8_general_ci.
如何显示相应的字符?
编辑: 问题解决了.以下是我修复它的方法:
冉mysql_query("SET NAMES 'utf8'");
添加/从数据库retreiving之前.(感谢Donal在下面的评论).
有点奇怪,php功能urlencode($text)
在显示时应用,因此必须删除.
我还确保页面的标题和ajax请求/响应都是utf8.
Mr.*_* 安宇 27
这看起来像unicode(最有可能是UTF-8)字符的经典案例被解释为iso-8859-1.沿途有几个地方角色可能会被破坏.首先,客户端的浏览器必须发送数据.如果数据无法正确转换为页面的字符编码,则可能会损坏数据.然后服务器读取数据并将字节解码为字符.如果客户端和服务器不同意所使用的编码,则字符将被破坏.然后将数据存储在数据库中; 再次存在腐败的可能性.最后,当数据写在页面上(用于显示到浏览器)时,如果页面没有充分指示它的编码,浏览器可能会错误解释字节.
您需要确保始终使用UTF-8.网页的默认值为iso-8859-1,因此您的网页应与Content-Type标头或元标记一起提供
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Run Code Online (Sandbox Code Playgroud)
(确保您确实在提供该编码中的文本).
通过在流程的所有部分使用UTF-8,您将避免所有可用的Web浏览器和数据库出现问题.
检查页面使用的编码.使用UTF-8对其进行编码,并添加描述编码的元标记:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Run Code Online (Sandbox Code Playgroud)
我们有一个 PHP 函数,它试图用智能引号清理混乱。这有点混乱,因为随着原型开发过程中出现的案例,它有点有机地增长。不过,这可能会有所帮助:
function convert_smart_quotes($string) {
$search = array(chr(0xe2) . chr(0x80) . chr(0x98),
chr(0xe2) . chr(0x80) . chr(0x99),
chr(0xe2) . chr(0x80) . chr(0x9c),
chr(0xe2) . chr(0x80) . chr(0x9d),
chr(0xe2) . chr(0x80) . chr(0x93),
chr(0xe2) . chr(0x80) . chr(0x94),
chr(226) . chr(128) . chr(153),
'’','“','â€<9d>','â€"',' ');
$replace = array("'","'",'"','"',' - ',' - ',"'","'",'"','"',' - ',' ');
return str_replace($search, $replace, $string);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28483 次 |
最近记录: |