问号字符在文本中显示,为什么会这样?

时间:2008-10-27 18:44:58

标签: html backup character-encoding mirror

我有一个备份服务器,可以自动备份我的实时站点,包括文件和数据库。

在实际网站上,文本看起来很好,但是当您查看它的镜像版本时,它会显示“?”在一些文本中。该文本存储在新闻数据库表中。

以下是它在实时服务器上的屏幕截图,以及它在镜像服务器上的屏幕截图。

在将其备份到镜像服务器的过程中会发生什么? alt text

9 个答案:

答案 0 :(得分:20)

以下文章将非常有用

http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

连接到数据库后,发出以下命令:

SET NAMES'utf8';

确保您的网页也使用UTF-8编码:

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

PHP还提供了几个对转换有用的功能:

http://us3.php.net/manual/en/function.iconv.php

http://us.php.net/mb_convert_encoding

答案 1 :(得分:11)

在“镜像”服务器(有问题的服务器)上编辑Apache配置文件,并注释掉以下行:

AddDefaultCharset UTF-8

然后重启Apache:

service httpd restart

问题是“AddDefaultCharset UTF-8”行会覆盖.html文件中指定的Content-Type; e.g:

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

最常见的症状是127以上的字符代码显示为带有问号的黑色钻石(在Chrome,Safari或Firefox中),或者显示为小盒子(在IE和Opera中)。 Microsoft Word生成的HTML文件通常包含许多此类字符,最常见的字符代码为160 = 0xA0,相当于“&amp; nbsp;”在Windows-1252编码中,通常在span标记之间找到,如下所示:

<span style="mso-spacerun: yes">ááá </span>

答案 2 :(得分:3)

我来到这里寻找浏览器中显示的JavaScript解决方案,虽然与数据库没有直接关系......

在我的情况下,我将我在互联网上找到的一些文本复制并粘贴到JavaScript文件中并用Windows记事本保存。

当使用该JavaScript文件的页面输出字符串时,会出现问号(如问题中显示的问号),而不是像重音字母等特殊字符。

我使用Notepad++打开了文件。在打开文件后,我看到字符编码设置为ANSI,如下所示,您可以看到(页脚上的鼠标光标):

enter image description here

要解决此问题,请点击Encoding中的Notepad++菜单,然后选择Encode in UTF-8。你应该好好去。 :)

答案 3 :(得分:1)

您的浏览器未正确解释页面的编码(因为您已将其强制设置为特定设置,或者页面设置不正确),因此无法显示某些字符。

答案 4 :(得分:1)

这将与角色编码有关。

您确定镜像网站在字符编码方面与主服务器具有相同的属性吗?

根据您拥有的服务器类型,这可能是服务器进程本身的属性,也可能是环境变量。

例如,如果这是一个UNIX环境,也许尝试比较LANG或LC_ALL?

另见here

答案 5 :(得分:0)

Unicode或其他字符集字符是否落空?

我已经看到类似的“奇怪”字符出现在我经常处理的网站上,当文本从电子邮件或其他文档格式(例如单词)复制到文本编辑器中时。编辑器可以显示非ASCII字符,但浏览器不能。对于网站,我建议查找该字符的HTML实体代码并插入该代码......或切换到更标准的代码。

答案 6 :(得分:0)

检查镜像服务器发出的字符集。似乎与主服务器有所不同 - 实时站点似乎输出Unicode,而镜像则不是。此外,通常最好在传入的内容中清除Unicode字符,并用适当的HTML实体替换它们。

您的具体问题涉及“智能引号”,“em破折号”和“破折号”。我知道你可以更换时间与破折号&mdash;和正破折号与&ndash;(这应该在你的数据库的输入端进行);我不知道智能报价的正确替代品是什么。 (我通常只是更换所有卷曲的单引号用“,并以”一切卷曲双引号...印刷术爱好者可以随意拍我的视线。)

我要指出,一些浏览器比其他人有这个问题更多的宽容 - Internet Explorer的Windows上趋于自动神奇地检测并“修复”这一点; Firefox和大多数其他浏览器都会显示问号。

答案 7 :(得分:0)

我经常诅咒MS字然后运行以下Wscript。

//替换为需要清理的文件的路径
PATH =“test.html”

var go = WScript.CreateObject(“Scripting.FileSystemObject”);
var content = go.GetFile(PATH).OpenAsTextStream()。ReadAll();
var out = go.CreateTextFile(“clean - ”+ PATH,true);

//符号
含量= content.replace(/“/ G '“');
含量= content.replace(/” / G '“');
含量= content.replace(/” / G “”“);
含量= content.replace(/ - /克, “ - ”);
含量= content.replace(/©/ g的, “&安培;复印;”);
含量= content.replace(/®/ g的, “&安培; REG;”);
含量= content.replace(/°/克, “&安培;度;”);
含量= content.replace(/¶/ g的, “&LT; P&gt;” 中);
含量= content.replace(/¿/ g的, “&安培; iquest;”);
含量= content.replace(/¡/克, '&安培; iexcl;');
含量= content.replace(/¢/克, '&安培;分;');
含量= content.replace(/£/克, '&安培;磅;'​​);
含量= content.replace(/¥/克, '&安培;日元;');

out.Write(内容);

答案 8 :(得分:0)

我遇到了这个问题,所以我只是拿走了所有内容,将其复制/粘贴到记事本中,制作了一个新的php文件,然后粘贴回去,重新保存并改写,然后..奏效了!确实是Microsoft Word编辑的遗物...