Проблема с UTF-8 в PhP - PullRequest
0 голосов
/ 23 мая 2011

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 und M�hre sch�len und in feine W�rfel schneiden.Hackfleisch in Pfanne geben, langsam erhitzen und im eigenen Fett unter R�hren anbraten.Salzen und pfeffern.Zwiebeln, Knoblauch und Mrenhren dazugeben und kurz mitbraten.Mit der Br�he abl�schen, Tomatenmark, Oregano, die gest�ckelten Tomaten und Tomatenketchup unterr�hren.Etwa 40 Minuten einkochen lassen.Спагетти в Зальцвассере bissfest kochen, abgie�en, abschrecken und zusammen mit der Sauce servieren.

Ответы [ 3 ]

1 голос
/ 23 мая 2011

Эти символы выглядят как недопустимые символы в выводе UTF-8, скорее всего, ISO-8859-1.

Ваше подключение к базе данных, вероятно, закодировано в ISO-8859-1, даже если данные находятся в UTF-8.

Исправьте это, выполнив следующий запрос после подключения.Для mySQL <5.0.7: </p>

mysql_query("SET NAMES utf8;");

для более новых mySQL:

mysql_set_charset("utf8"); 
0 голосов
/ 23 мая 2011

Вывод выглядит так, как будто ваши данные, прочитанные из БД, не в формате utf-8.Для тестирования попробуйте другую кодировку, например ISO-8859-1.Если при этом текст отображается правильно, то причина проблемы в том, что содержимое БД вообще не является utf-8.

0 голосов
/ 23 мая 2011

Удалите все php и echo из вашего кода и просто введите простой HTML-файл, я не понимаю, почему вы используете echo в этом случае. В областях php остаются только области, требующие некоторых вычислений, например цикл while

UPDATE

Может быть, вам нужен другой кодировщик символов, просто выберите тот, который соответствует данным в вашей базе данных, и вы можете указать его в html штраф

meta content-type = 'correct-encoding'

или в функции заголовка php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...