Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Brak polskich znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
Usperial
Hejka!
Po przeniesieniu się na inny hosting, w bazie mysql nie wyświetlają się polskie znaki, które wcześniej wysłane były przez formularz php.
Dodam, że na innym hostingu wszystko śmigało.
Przeszukałem całe forum, ale nie znalazłem odpowiedzi na moje pytanie.
w mysql jest ustawione utf8_general_ci
Pomocy! :<

  1. $con = mysqli_connect($host, $userName, $password, $dbName);
  2. mysqli_query("SET NAMES utf8");
  3.  
  4. $name = $_POST['name'];
  5. $surname = $_POST['surname'];
  6. $age = $_POST['age'];
  7. $sex = $_POST['sex'];
  8. $height = $_POST['height'];
  9. $weight = $_POST['weight'];
  10. $look = $_POST['look'];
  11. $personality = $_POST['personality'];
  12. $history = $_POST['history'];
  13. $img = $_POST['img'];
  14. $token = $_POST['token'];
  15.  
  16. $query2 = mysqli_query($con, "SELECT userDISID FROM tokens WHERE token='".$token."'");
  17. $userDISID = mysqli_fetch_row($query2);
  18.  
  19.  
  20.  
  21. $query = mysqli_query($con, "SELECT * FROM tokens WHERE token='".$token."'");
  22.  
  23.  
  24. if (!$query)
  25. {
  26. die('Error: ' . mysqli_error($con));
  27. }
  28.  
  29. else if(mysqli_num_rows($query) == 0){
  30.  
  31. echo "Nieprawidłowy token.";
  32. }
  33.  
  34. else{
  35. $userDISID2 = implode("|",$userDISID);
  36. $sql3 = "INSERT INTO kartyPostaci (token, userDISID, isVerified, name, surname, age, sex, height, weight, look, personality, history, img) VALUES ('$token', '$userDISID2', 'Nie', '$name', '$surname', '$age', '$sex', '$height', '$weight', '$look', '$personality', '$history', '$img')";
  37.  
  38. $query3 = mysqli_query($con, $sql3);
  39.  
  40.  
  41. $sql4 = "DELETE FROM tokens WHERE token = '$token'";
  42. $query4 = mysqli_query($con, $sql4);
  43.  
  44. $sql5 = "SET CHARSET utf8";
  45. $query5 = mysqli_query($con, $sql5);
  46. echo "Dodano kartę.";
  47.  
  48. }
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. ?>
Tomplus
Skoro pytanie dotyczy kodowania mysql, to pełen kod skryptu jest zbyteczny. Wystarczą pierwsze dwie linijki tak naprawdę.

Problem z kodowaniem jest znany od dawna. Rozwiązanie ma jednak różne drogi.
Nie powiedziałeś nam jakie kodowanie miała baza danych wcześniej. Bo to że deklarujesz utf8 dla mysql nie ma znaczenia, a możesz namieszać.

W jakim kodowaniu dane w ogóle wcześniej były zapisywane. Być może w ISO-88590-2 albo Windows-1250, a potem na siłę przekonwertowane w bazie na UTF8.
Może kodowanie strony nie jest UTF-8?

Jak masz dostęp jeszcze do starej bazy danych, możesz spróbować inną metodą przenieść dane. Inną metodą zaktualizować. Chociaż proste to nie jest.
Otwierasz dwa połączenia z bazą:
Jeden do starej bazy, gdzie dane wyświetlają się poprawnie na domyślnym kodowaniu.
Drugi do nowej na UTF8.

Wykonujesz update danych z $sql1 do w $sql2. Bez żadnych dodatkowych kombinacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.