Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ [MySQL][PHP]Brak polskich znaków

Napisany przez: Usperial 24.06.2019, 22:27:36

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. http://www.php.net/die('Error: ' . mysqli_error($con));
  27. }
  28.  
  29. else if(mysqli_num_rows($query) == 0){
  30.  
  31. http://www.php.net/echo "Nieprawidłowy token.";
  32. }
  33.  
  34. else{
  35. $userDISID2 = http://www.php.net/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. http://www.php.net/echo "Dodano kartę.";
  47.  
  48. }
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. ?>

Napisany przez: Tomplus 25.06.2019, 01:34:24

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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)