Brak polskich znaków - próbowałem już chyba wszystkich rozwiązań

Brak polskich znaków - próbowałem już chyba wszystkich rozwiązań
Kunoji
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:7
0

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! :<

Kopiuj
$con = mysqli_connect($host, $userName, $password, $dbName);
mysqli_query("SET NAMES utf8");

$name = $_POST['name'];  
$surname = $_POST['surname'];  
$age = $_POST['age'];  
$sex = $_POST['sex'];  
$height = $_POST['height'];  
$weight = $_POST['weight'];  
$look = $_POST['look']; 
$personality = $_POST['personality']; 
$history = $_POST['history']; 
$img = $_POST['img'];
$token = $_POST['token']; 

$query2 = mysqli_query($con, "SELECT userDISID FROM tokens WHERE token='".$token."'");
$userDISID = mysqli_fetch_row($query2);



$query = mysqli_query($con, "SELECT * FROM tokens WHERE token='".$token."'");


    if (!$query)
    {
        die('Error: ' . mysqli_error($con));
    }

else if(mysqli_num_rows($query) == 0){
	
	echo "Nieprawidłowy token.";
}

else{
$userDISID2 = implode("|",$userDISID);
	 $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')";

	 $query3 = mysqli_query($con, $sql3);


	 $sql4 = "DELETE FROM tokens WHERE token = '$token'";
	 $query4 = mysqli_query($con, $sql4);
	 
	 $sql5 = "SET CHARSET utf8";
	 $query5 = mysqli_query($con, $sql5);
	echo "Dodano kartę.";

}









?>
edytowany 1x, ostatnio: Kunoji
czysteskarpety
czysteskarpety
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

Na myśl przychodzi ustawienia nowego hostingu, wersji php, mysql, porównać ze starym.


Kunoji
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:7
0

Co powinienem zrobić, jeśli się różnią?
Zmieniłem wersję php na taką samą, jak była na poprzednim. Z mysql chyba nic nie poradzę.
Błąd nie ustał.

edytowany 3x, ostatnio: Kunoji
DA
  • Rejestracja:około 6 lat
  • Ostatnio:3 minuty
  • Postów:141
2

Podziel na trzy kroki.

  1. Jeśli robiłeś zrzut starej bazy do pliku tekstowego, otwórz ten plik w jakimś edytorze dobrze obsługującym UTF-8 (np. Notepad++, Sublime Text) i zobacz, czy zachowało się prawidłowe kodowanie znaków.
  2. Przez phpMyAdmin zaglądnij do treści nowej bazy danych po zaimportowaniu danych, czy dane polskie znaki mają taką postać jak powinny.
  3. Dopiero jeśli powyższe kroki nie dadzą odpowiedzi, szukaj problemu w kodzie PHP.
edytowany 3x, ostatnio: -daniel-
Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:dzień
  • Postów:2792
2

Podaj kodowanie: servera, bazy, tabeli, kolumny (któregoś nie ma w MySQL).
Podaj kodowanie pliku backupu.
Podaj kodowanie pliku PHP.
(Ten sql5 masz w jakimś dziwnym miejscu. To powinno być jedno z pierwszych zapytań po połączeniu do bazy)
Podaj <meta charset="???" />

Czy błąd masz przy zapisie do bazy, czy przy odczycie?

Kunoji
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:7
0
-daniel- napisał(a):

Podziel na trzy kroki.

  1. Jeśli robiłeś zrzut starej bazy do pliku tekstowego, otwórz ten plik w jakimś edytorze dobrze obsługującym UTF-8 (np. Notepad++, Sublime Text) i zobacz, czy zachowało się prawidłowe kodowanie znaków.
  2. Przez phpMyAdmin zaglądnij do treści nowej bazy danych po zaimportowaniu danych, czy dane polskie znaki mają taką postać jak powinny.
  3. Dopiero jeśli powyższe kroki nie dadzą odpowiedzi, szukaj problemu w kodzie PHP.
  1. zachowało się prawidłowe kodowanie
  2. zaimportowane dane mają polskie znaki w bazie mysql
    Czyli wychodzi na to, że to błąd w php
    (wrzucam eksport tabeli, tak, żeby być pewnym, że wszystko ok: https://pastebin.com/xMhXgTnX)
Marcin.Miga napisał(a):

Podaj kodowanie: servera, bazy, tabeli, kolumny (któregoś nie ma w MySQL).
Podaj kodowanie pliku backupu.
Podaj kodowanie pliku PHP.
(Ten sql5 masz w jakimś dziwnym miejscu. To powinno być jedno z pierwszych zapytań po połączeniu do bazy)
Podaj <meta charset="???" />

Czy błąd masz przy zapisie do bazy, czy przy odczycie?

  1. Nie do końca jestem pewien, gdzie szukać kodowania servera, ale jeśli to to, które znajduje się na stronie głównej phpmyadmin to:
    kodowanie serwera> utf8_polish_ci
    kodowanie bazy> utf8_polish_ci
    kodowanie tabeli> utf8_polish_ci
    kodowanie kolumny> utf8_polish_ci
  2. Pliczek załączyłem wyżej
  3. plik.php, na którym jest formularz: https://pastebin.com/j9PC3c99
    plik .php, który wysyła zapytanie do bazy (z usuniętymi danymi logowania): https://pastebin.com/cypPP33A
  4. <meta charset="UTF-8">
    
  5. Odczyt i zapis kiełbasi tak samo :<

Pozdrawiam!

DA
  • Rejestracja:około 6 lat
  • Ostatnio:3 minuty
  • Postów:141
1

<style> video-responsive{ wrzuć na koniec head, <meta charset="UTF-8"> wywinduj do góry na początek head, przeglądarki podglądają tylko mały początkowy fragment pliku i może się nie łapie.

Kopiuj
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
... i reszta

lang ma być en?

Mogłeś też wykorzystać migrację na przejście z utf8 (mb3) na utf8mb4.

Możesz jeszcze sprawdzić, czy echo lub print prawidłowo generuje polskie znaki print('ĄĆĘŁŃÓŚŹŻąćęłńóśźż');. To pozwoli określiż zgodność kodowania w skrypcie i w przeglądarce.

edytowany 4x, ostatnio: -daniel-
Kunoji
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:7
0
-daniel- napisał(a):

<style> video-responsive{ wrzuć na koniec head, <meta charset="UTF-8"> wywinduj do góry na początek head, przeglądarki podglądają tylko mały początkowy fragment pliku i może się nie łapie.

Kopiuj
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
... i reszta

lang ma być en?

Mogłeś też wykorzystać migrację na przejście z utf8 (mb3) na utf8mb4.

Możesz jeszcze sprawdzić, czy echo lub print prawidłowo generuje polskie znaki print('ĄĆĘŁŃÓŚŹŻąćęłńóśźż');. To pozwoli określiż zgodność kodowania w skrypcie i w przeglądarce.

usunąłem <style> całkowicie, zmieniłem lang na 'pl'

Print pomyślnie wygenerował polskie znaki, ale wciąż formularz wysyła krzaczki

edytowany 1x, ostatnio: Kunoji
DA
  • Rejestracja:około 6 lat
  • Ostatnio:3 minuty
  • Postów:141
1

A zrobiłeś poprawkę wg @Marcin.Miga "Ten sql5 masz w jakimś dziwnym miejscu"

Czy musisz tworzyć dwa osobne połączenia do bazy? Nie lepiej otworzyć jedno i dobrze je skonfigurować?

Kopiuj
$con = mysqli_connect($host, $userName, $password, $dbName);
//Tu może brakować
mysqli_set_charset ( $con, 'utf8' );
...
// Drugie połączenie???
$mysqli = new mysqli($host, $userName, $password, $dbName);

Osobiście preferuję PDO:

Kopiuj
$DB = new PDO(
		'mysql:host=jakiś_host;dbname=nazwa_bazy;charset=utf8mb4',
		'nazwa_użytkownika',
		'hasło' );
edytowany 6x, ostatnio: -daniel-
Kunoji
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:7
0
-daniel- napisał(a):

A zrobiłeś poprawkę wg @Marcin.Miga "Ten sql5 masz w jakimś dziwnym miejscu"

Czy musisz tworzyć dwa osobne połączenia do bazy? Nie lepiej otworzyć jedno i dobrze je skonfigurować?

Kopiuj
$con = mysqli_connect($host, $userName, $password, $dbName);
//Tu może brakować
mysqli_set_charset ( $con, 'utf8' );
...
// Drugie połączenie???
$mysqli = new mysqli($host, $userName, $password, $dbName);

Osobiście preferuję PDO:

Kopiuj
$DB = new PDO(
		'mysql:host=jakiś_host;dbname=nazwa_bazy;charset=utf8mb4',
		'nazwa_użytkownika',
		'hasło' );

Sukces, dodałem mysqli_set_charset ( $con, 'utf8' ); zaraz pod pierwszym połączeniem i podziałało.
Dziękuję panowie <3

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)