Браузер показывает мне "???"вместо символов UTF-8 - PullRequest
0 голосов
/ 08 августа 2010

Браузер показывает мне "???" вместо символов UTF-8. В чем причина и как я могу это исправить?

Вот файл HTML:

<HTML>
      <title>Search Engine</title>
     <form action='search.php' method='GET'>
           <font face='sans-serif' size='5'>
           <center>
                  My Search Engine.<br>
                   <input type='text' size='50' name='search'> <input type='submit' name='submit' value='Search'><br>

           </center>
           </font>
           <center><a href='submiturl.php'>Submit a URL</a></center>
     </form>
</HTML>

Это search.php:

<?php

 //get data
$button = $_GET['submit'];
$search = $_GET['search'];

if (!$button)
   echo "Please fill out the form";
else
{
    if (strlen($search)<=2)
   echo "The item you searched for was to small";
    else
   {
     echo "You searched for <b>$search</b> <hr size='1'>";

     //connect to database

     mysql_connect('localhost','k_search','1234.');
     mysql_select_db('k_search');


           //explode search term
           $search_exploded = explode(" ",$search);
           foreach($search_exploded as  $search_each)
           {
           //construct query

            $x++;
            if ($x==1)
               $construct .= "keywords LIKE '%$search_each%'";
           else
              $construct .= " OR keywords LIKE '%$search_each%'";

           }



     //echo out construct




    $construct = "SELECT * FROM searchengine WHERE $construct";
     $run = mysql_query($construct);

     $foundnum = mysql_num_rows($run);

     if ($foundnum==0)
        echo "No results found.";
     else
     {

       echo "$foundnum results found.<p><hr size='1'>";

       while ($runrows = mysql_fetch_assoc($run))
       {
        //get data
        $title = $runrows['title']; 
        $desc = $runrows['description'];
       $url = $runrows['url'];

        echo "<b>$title</b><br>
       $desc<br>
       <a href='$url'>$url</a><p>";

       }

     }



    }
}


?>

Это submiturl.php:

<HTML>
<title>Search Engine</title>
<form action='submiturl.php' method='POST'>
           <font face='sans-serif' size='5'>
           <center>
                   Please fill out all fields to submit your URL.<br><br></font>
                   URL:<br><input type='text' size='50' name='url' value='http://www.'><br><br>
            Site Name:<br><input type='text' size='50' name='title'><br><br>
            Description (max 200 characters):<br><input type='text' size='50' name='description' maxlength='200'><br><br>
             Keywords:<br><input type='text' size='50' name='keywords'><br><br>
             <input type='submit' name='submit' value='Submit URL'>

</form>
<br><a href='index.html'>Go Back</a>
</center>
</HTML>

<?php

$submit = $_POST['submit'];
$title = $_POST['title'];
$description = $_POST['description'];
$url = $_POST['url'];
$keywords = $_POST['keywords'];



$connect = mysql_connect("localhost","k_search","1234.");
mysql_select_db("k_search");

if (!$title||!$description||!$url||!$keywords)
{
  die ("<center>Please fill in all fields.</center>");
}
else
if ($submit)
{
mysql_query("INSERT INTO searchengine VALUES('','$title','$description','$url','$keywords')");
echo "<center>Website Submitted!</center>";
}
else
echo "<center>Please fill in all fields.</center>";
?>

Ответы [ 5 ]

3 голосов
/ 08 августа 2010

Это может иметь 2 причины:

  1. БД не было предписано использовать UTF-8 во время INSERT.
  2. PHP не было предписано использовать UTF-8 во время вывода вывода.

Чтобы исправить одно или другое, прочитайте это: PHP UTF-8 cheatsheet .


Тем не менее, в вашем коде есть и другие проблемы. Теги <font> и <center> устарели с 1998 года. Использовать CSS . Кроме того, SQL чувствителен к атакам SQL-инъекций. Очистить ваши параметры SQL.

2 голосов
/ 04 сентября 2012

Раньше я боролся с "????????" персонажи, но я получил ответ для меня.

Попробуйте использовать UTF-8 без кодировки BOM для вашего файла PHP. Notepad ++ может обрабатывать этот тип кодировки файлов.

В Notepad ++ просто перейдите в кодировку и проверьте UTF-8 без спецификации.

1 голос
/ 12 сентября 2013

Если дБ находится в utf-8-general-ci THEN, вы должны установить php файл Encoding в UTF-8

, который работает для меня.

0 голосов
/ 08 августа 2010

Мне кажется, проблема в том, что ваша таблица таблиц уже установлена.

  1. Убедитесь, что сопоставление для таблица установлена ​​на utf8_general_ci .
  2. Убедитесь, что сопоставление для каждого поле в таблице установлено на utf8_general_ci

Вы должны отредактировать каждое поле в таблице для этого: (

http://www.assistprogramming.com/wp-content/uploads/2007/09/table.jpg

0 голосов
/ 08 августа 2010

проверьте, что вы объявили тип документа и набор символов, это часто является причиной ..

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