PHP字符更改

时间:2011-02-21 19:55:51

标签: php character-encoding ms-word mojibake

我的PHP应用程序将我的撇号字符更改为

我的罪行是什么?

2 个答案:

答案 0 :(得分:4)

单击“Microsoft Office按钮”,然后单击“Word选项”。

单击“校对”,然后单击“自动更正选项”。

在“自动更正”对话框中,执行以下操作:

单击“键入时自动套用格式”选项卡,在键入时单击“替换”下,选中或清除“直线引号”和“智能引号”复选框。

单击“自动套用格式”选项卡,然后在“替换”下,选中或清除“直线引号”和“智能引号”复选框。

哦,如果你必须:

<?php 

function convert_smart_quotes($string) 
{ 
$search = array(chr(145), 
                chr(146), 
                chr(147), 
                chr(148), 
                chr(151)); 

$replace = array("'", 
                 "'", 
                 '"', 
                 '"', 
                 '-'); 

return str_replace($search, $replace, $string); 
} 

?>

替代方案,以保留像David Harkness这样的人

<?php 

$replace = array('&lsquo;', 
             '&rsquo;', 
             '&ldquo;', 
             '&rdquo;', 
             '&mdash;'); 

?>

答案 1 :(得分:1)

您需要确保您的服务器在Content-Type标头上发送UTF-8字符集。卷曲引号使用多个字节,因此您需要一个适当的字符集来反映它。如果你的服务器没有在标题中发送字符集,大多数浏览器都会假设你使用标准的ISO-8859字符集,每个字符只使用一个字节,这表明你只输入了一个字符的3个字符。

如果使用Apache,则应在httpd.conf中设置默认字符集:

AddDefaultCharset UTF-8

如果您无法访问服务器配置,则可以在输出任何内容之前从php发送标头。

header('Content-Type: text/html; charset=UTF-8');
相关问题