PhP中的UTF-8问题

时间:2011-05-23 08:43:05

标签: php html utf-8 diacritics

HY!

我的php与umlauts的输出有问题。 我的代码:

<?php

echo"<!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=\"en\" lang=\"en\"> 
<head> 
    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" /> 
    <title>Tabs</title> 
    <style type=\"text/css\" media=\"screen\"> ";


echo "<script src=\"http://code.jquery.com/jquery-1.6.1.min.js\" type=\"text/javascript\" charset=\"utf-8\"></script> 
    <script type=\"text/javascript\" charset=\"utf-8\"> 
        $(function () {
            var tabContainers = $('div.tabs > div');
            tabContainers.hide().filter(':first').show();

            $('div.tabs ul.tabNavigation a').click(function () {
                tabContainers.hide();
                tabContainers.filter(this.hash).show();
                $('div.tabs ul.tabNavigation a').removeClass('selected');
                $(this).addClass('selected');
                return false;
            }).filter(':first').click();
        });
    </script> 
</head> 
<body id=\"page\">";


echo "<div class=\"tabs\">
  <!-- tabs -->
  <ul class=\"tabNavigation\">
    <li><a href=\"#user\">User</a></li>
    <li><a href=\"#recipe\">Recipe</a></li>
    <li><a href=\"#recipe_pos\">Recipe_Pos</a></li>
    <li><a href=\"#ingred\">Ingredients</a></li>
    <li><a href=\"#ingred_pos\">Ingredients_Pos</a></li>
  </ul>

  <!-- tab containers -->
  <div id=\"user\">
    <p>Lorem ipsum dolor sit amet.</p>
  </div>
  <div id=\"recipe\">";


    include 'config.php';
    include 'opendb.php';
    $result = mysql_query("SELECT * FROM RECIPES '");
    while($row = mysql_fetch_array($result))
      {
      echo "<p id=\"boarder\">";
      echo "<span>";
      echo "<b>" . $row['title'] . "</b><br/>";
      echo "<br />";
      echo $row['text'];
      echo "<br /><br />";
      echo mysql_error();
      echo "</span>";
      echo "</p>";
      }
    include 'closedb.php';

?>

输出:

  

Zwiebel,Knoblauch和M hresch len   并且在feineW rfelsschneiden。   Hackfleisch死于Pfanne geben,   langsam erhitzen und im eigenen Fett   R hrenanbraten。萨尔岑和   pfeffern。 Zwiebeln,Knoblauch und   M hrendazugebenund kurz mitbraten。   MitderBr heabl schen,Tomatenmark,   牛至,死去的Tomaten und   Tomatenketchupunterr hren。 Etwa 40   Minuten einkochen lassen。意大利面条   Salzwasser bissfest kochen,abgie en,   abschrecken und zusammen mit der Sauce   servieren。

3 个答案:

答案 0 :(得分:1)

这些字符在UTF-8输出中看起来像无效字符,很可能是ISO-8859-1。

您的数据库连接可能是ISO-8859-1编码,即使数据是UTF-8。

通过连接后执行以下查询来修复它。对于mySQL&lt; 5.0.7:

mysql_query("SET NAMES utf8;");

对于较新的mySQL:

mysql_set_charset("utf8"); 

答案 1 :(得分:0)

输出看起来好像从数据库读取的数据不是utf-8格式。要进行测试,请尝试使用其他编码,例如ISO-8859-1。如果这显示正确的文本,那么问题的原因是db内容根本不是utf-8。

答案 2 :(得分:-2)

从代码中删除所有的php和echos,并简单地键入一个纯HTML文件,我不明白为什么你在这种情况下使用echo。只有需要一些计算的区域才会停留在php标签中,例如while循环

<强>更新

也许您需要一个不同的字符编码,只需选择与数据库中的数据匹配的字符编码,您可以在html中指定它

meta content-type ='correct-encoding'

或在php标头函数中