代码之家  ›  专栏  ›  技术社区  ›  Brad

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

  •  19
  • Brad  · 技术社区  · 16 年前

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

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

    下面是它在活动服务器上的屏幕截图,以及它在镜像服务器上的屏幕截图。

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

    8 回复  |  直到 6 年前
        1
  •  18
  •   adrianbanks    13 年前

    以下文章将非常有用

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

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

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

    设置名称“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

        2
  •  9
  •   Dave Burton    12 年前

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

    AddDefaultCharset UTF-8
    

    然后重新启动Apache:

    service httpd restart
    

    问题是,“adddefaultcharset utf-8”行重写.html文件中指定的内容类型;例如:

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

    最常见的症状是127以上的字符代码显示为带有问号的黑色菱形(在Chrome、Safari或Firefox中),或显示为小方框(在IE和Opera中)。由Microsoft Word生成的HTML文件通常有许多这样的字符,最常见的是字符代码160=0xa0,这相当于Windows-1252编码中的“&nbsp;”,并且经常出现在跨标记之间,如下所示:

    <span style="mso-spacerun: yes">ááá </span>
    
        3
  •  3
  •   Leniel Maccaferri    12 年前

    我在这里寻找浏览器中显示的javascript的解决方案,尽管它与数据库没有直接关系…

    在我的例子中,我复制并粘贴了一些在互联网上找到的文本到一个javascript文件中,并用Windows记事本保存了它。

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

    我打开文件时使用 Notepad++ . 打开文件后,我看到字符编码设置为 ANSI 正如您在下面的屏幕截图中看到的(鼠标光标在页脚上):

    enter image description here

    要解决此问题,请单击 Encoding 菜单在 记事本+ 并选择 Encode in UTF-8 . 你该走了。:)

        4
  •  1
  •   JamShady    16 年前

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

        5
  •  1
  •   toolkit    16 年前

    这与字符编码有关。

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

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

    例如,如果这是一个Unix环境,也许可以尝试比较lang或lc-all?

    也见 here

        6
  •  0
  •   John Rudy    16 年前

    检查镜像服务器发出的字符集。这似乎与主服务器有所不同——活动站点似乎正在输出Unicode,而镜像则不在其中。此外,通常最好清除传入内容中的Unicode字符,并将其替换为相应的HTML实体。

    你的具体问题是“聪明的引用”、“长划线”和“长划线”。我知道你可以用“短划线”来代替 &mdash; 和N-破折号 &ndash; (应该在数据库的输入端进行);我不知道智能引号的正确替换是什么。(我通常只需将所有的单引号替换为',将所有的双引号替换为“…”印刷业的极客们可能会在看到我的时候随意开枪。)

    我要注意的是,有些浏览器比其他浏览器更容易理解这个问题——Windows上的Internet Explorer会自动神奇地检测并“修复”这个问题;Firefox和大多数其他浏览器都会显示问号。

        7
  •  0
  •   Nick Van Brunt    16 年前

    我通常会诅咒MS Word,然后运行以下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=content.replace(/“/g”,“');
    content=content.replace(/“/g”,“');
    content=content.replace(/'/g,“”);
    content=content.replace(/–/g,“-”);
    content=content.replace(/),/g,“&copy;”;
    content=content.replace(/?/g,“&reg;”);
    content=content.replace(/“g,”&deg;“);
    content=content.replace(/¶/g,“<p>”);
    content=content.replace(/?/g,“&iquest;”);
    content=content.replace(/g,“&iexcl;”);
    content=content.replace(/?/g,&cent;');
    content=content.replace(/?/g,&pound;');
    content=content.replace(/?/g,&yen;');

    写出(内容);

        8
  •  0
  •   nhahtdh Pankaj Wadhwa    12 年前

    Unicode字符或其他字符集字符?

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