特殊字符未显示在text / html对象中

时间:2015-03-16 08:31:18

标签: php html special-characters

我正在尝试使用text / html对象显示来自网站的内容,如下所示:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta charset="UTF-8">
</head> 

<object type="text/html" width="735" height="1000"
    data="http://www.meteo.physik.uni-muenchen.de/dokuwiki/phpincludes/publicationstest.php?abteilung=alle&rev=ja&ajahr=2006&mim=ja">
  <p>you should have seen my other page here, but something broke.</p>
</object>

但是,特殊字符无法正确显示。我可以看到,但不能编辑在服务器端创建输出的php脚本:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0"; charset=charset=ISO-8859-1>
<title>Publikationen</title>

</head>

<body>
<?php
if ($query['rev'] == "alle") {$OK = true;};
...
?>
</p>
</body>
</html>

是否可以正确显示特殊字符?

1 个答案:

答案 0 :(得分:0)

公然的mojibake范例。

original data来自下一个程序

所有数据都在UTF-8进行了编码,另请参见显式HTML元属性charset=utf-8

但是,这些数据发生在嵌入式 HTML文档 bogusly 看似归因于charset=ISO-8859-1的下一个场景之后({{3 }}):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    ...
  </head>
  <body>
    ...
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <html>
      <head>
        <meta name="GENERATOR" content="Microsoft FrontPage 4.0"; charset=charset=ISO-8859-1>
        <title>Publikationen</title>
      </head>
      <body>
        ...
        ...       UTF-8 encoded data bogusly attributed `charset=ISO-8859-1`
        ...
      </body>
    </html>
    ...
  </body>
</html>

另一方面,您正在显示从原始网站中提取的部分内容(invalid HTML markup code)。不幸的是,在其内容中有一些UTF-8个字符(请参阅评论中的示例数据)误解如下:

char  encoding     code        name
ü     UTF-8        0xC3 0xBC   LATIN SMALL LETTER U WITH DIAERESIS
à    ISO-8859-1   0xC3        latin capital letter a with tilde
¼     ISO-8859-1        0xBC   vulgar fraction one quarter

ä     UTF-8        0xC3 0xA4   LATIN SMALL LETTER A WITH DIAERESIS
à    ISO-8859-1   0xC3        latin capital letter a with tilde
¤     ISO-8859-1        0xA4   currency sign

由于charset=UTF-8编码数据被charset=ISO-8859-1解释。