Kodowanie w PHP

0

Okej, znowu pojawiły się problemy, przeszukałem już całe google i nie znalazłem odpowiedzi, może ktoś tutaj zaradzi

A wiec; mam wyszukiwarkę która automatycznie generuje podpowiedzi wyciągając je z bazy danych
ALE nie działają w niej polskie ogonki

  • kodowanie dokumentu** UTF-8**,
  • pliki zapisane w UTF-8 bez BOM,
  • metoda porównywania znaków w bazie** utf8-polish-ci**

A wpisując w wyszukiwarkę coś co zawiera polski znak pokazuje się '?' czyli znak zapytania

https://d3higte790sj35.cloudfront.net/images/bx/bw/0f9cefc72a1cd2a663a93fd14ad46ecc.jpeg

   <?php
    //database configuration
    $dbHost = 'localhost';
    $dbUsername = 'root';
    $dbPassword = '';
    $dbName = 'filmy';
    
    //connect with the database
    $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
    
    //get search term
    $searchTerm = $_GET['term'];
    
    //get matched data from skills table
    $query = $db->query("SELECT * FROM filmy WHERE nazwa LIKE '%".$searchTerm."%' ORDER BY nazwa ASC");
    while ($row = $query->fetch_assoc()) {
        $data[] = $row['nazwa'];
    }
    
    //return json data
    echo json_encode($data);
?>

Na stacku znalazłem jakąś wzmiankę że problem może być właśnie w ostatniej linijce
ale wpisując w wyszukiwarkę polski znak i klikając enter dalej nic się nie pokazuje

<?php

    if(isset($_POST['wyszukaj'])){
        try{
            $baza = new PDO('mysql:host=localhost;dbname=filmy', 'root', '', array(
            PDO::ATTR_EMULATE_PREPARES => false,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ));

            $wyszukaj=$_POST['wyszukaj'];
            
            $minw = 1;
            
            if(strlen($wyszukaj)>=$minw)
            {
                $wyszukaj =htmlspecialchars($wyszukaj);
                $zapytanie=$baza->prepare("SELECT * FROM filmy WHERE nazwa LIKE :wyszukaj");
                $zapytanie->bindValue('wyszukaj', $_POST['wyszukaj'], PDO::PARAM_STR);
                 
                $zapytanie->execute(array('%'.$wyszukaj.'%'));
                
                    if($zapytanie->rowCount()>0)
                    {
                        while($wynik = $zapytanie->fetch())
                        {
                            $tytul = $wynik['nazwa'];
                            echo '<a href="'.$tytul.'.html"><div class="box">';
                            echo $wynik['nazwa'];
                            echo "<br>";
                            echo $wynik['rok'];
                            echo "</div></a>";
                           
                        }
                    }
                    else
                    {
                        echo "Brak wyników";
                    }
            }

        }catch (PDOException $err){
            echo "Error!: ". $err->getMessage();
        }
    }
?>

No i strona główna

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>TItle</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <link rel="stylesheet" href="jquery-theme.css">
    <link rel="stylesheet" href="style.css">
    
</head>
<body>
    <header>
        
    </header>
    <main>
       <div class="ui-widget">
            <form method="POST">
                <input type="text" name="wyszukaj" id="filmy" placeholder="Wpisz tytuł filmu">
                <input type="submit" name="szukaj" value="Znajdź film" >
            </form>
        </div>
        
        <?php require_once('wyszukiwarka.php'); ?>
    </main>
    <footer></footer>
    
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
      <script src="main.js"></script>
</body>
</html>
0

Podczas łączenia z bazą musisz również określić charset.

0
Patryk27 napisał(a):

Podczas łączenia z bazą musisz również określić charset.

chodzi o ```
query("SET NAMES 'latin2'");

0

okej, temat do zamknięcia, pomogły 2 linijki


mysqli_set_charset($db,"utf8");

i

$baza = new PDO('mysql:host=localhost; dbname=filmy; charset=utf8', 'root', '', array(
            PDO::ATTR_EMULATE_PREPARES => false,

1 użytkowników online, w tym zalogowanych: 0, gości: 1