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

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

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

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

有帮助吗?

解决方案

以下文章将非常有用

http://dev.mysql.com/doc/ refman / 5.0 / EN /字符集-syntax.html

http://dev.mysql.com/doc/ refman / 5.0 / EN /字符集-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

其他提示

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

AddDefaultCharset UTF-8

然后重启Apache:

service httpd restart

问题是<!>“AddDefaultCharset UTF-8 <!>”; line覆盖.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; <!> quot;在Windows-1252编码中,通常在span标记之间找到,如下所示:

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

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

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

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

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

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

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

这将与角色编码有关。

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

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

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

另见此处

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

您的具体问题涉及<!>“智能引号,<!>”; <!>“em破折号<!>”;和<!> quot; en dashes。<!> quot;我知道你可以用&mdash;替换em破折号和用&ndash;代替n破折号(这应该在数据库的输入端完成);我不知道智能报价的正确替代品是什么。 (我通常只用'和所有卷曲的双引号替换所有卷曲的单引号<!>; ... ...排版极客可以随时拍摄我。)

我应该注意到,有些浏览器比其他浏览器更容易出现此问题 - Windows上的Internet Explorer会自动检测到并且<!>修复<!>这个; Firefox和大多数其他浏览器都会显示问号。

我通常会诅咒MS字,然后运行以下Wscript。

//替换为需要清理的文件的路径
PATH = <!> quot; test.html <!> quot;

var go = WScript.CreateObject(<!> quot; Scripting.FileSystemObject <!> quot;);
var content = go.GetFile(PATH).OpenAsTextStream()。ReadAll();
var out = go.CreateTextFile(<!> quot; clean - <!> quot; + PATH,true);
点击 //符号
含量= content.replace(<!> /#8220 /克, 'QUOT <!>;');结果 含量= content.replace(<!> /#8221 /克, 'QUOT <!>;');结果 含量= content.replace(/#8217 <!>; <!> /克和quot;'QUOT <!>);结果 含量= content.replace(<!> /#8211 /克,QUOT <!>; - QUOT <!>);结果 含量= content.replace(/#169 <!> /克,QUOT <!>; <!>安培;复印; QUOT <!>);结果 含量= content.replace(<!> /#174; /克,QUOT <!>; <!>安培; REG; QUOT <!>);结果 含量= content.replace(/#176 <!> /克,QUOT <!>; <!>安培;度; QUOT <!>);结果 含量= content.replace(/#182 <!> /克,QUOT <!>; LT <!>,P GT <!>; QUOT <!>);结果 含量= content.replace(<!> /#191 /克,QUOT <!>; <!>安培; iquest; QUOT <!>);结果 含量= content.replace(<!> /#161 /克, '安培<!>; iexcl;');结果 含量= content.replace(<!> /#162 /克, '安培<!>;分;');结果 含量= content.replace(<!> /#163 /克, '安培<!>;磅;');结果 含量= content.replace(<!> /#165 /克, '安培<!>;日元;');结果 点击 out.Write(内容);结果

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top