• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zwykle problem z kodowaniem bazy danych

Object Storage Arubacloud
0 głosów
202 wizyt
pytanie zadane 9 maja 2023 w SQL, bazy danych przez tetkris Nowicjusz (230 p.)

Witam, mam nadzieję że to co pytam to nie jest proszenie się o gotowca, bo próbowałem to sam zrobić, czytałem również tematy z waszego forum któe mogłyby mi pomóc ale nie bardzo widzę tam rozwiązanie, żadne z zastosowanych nie zadzaiałało. 

Baza danych wydaje się obsługiwać polskie znaki, ale gdy używam formularza własnej roboty na swojej stronie to przesyła mi do bazy danych tekst z krzakami. Podejrzewam że to ustawienie jest źle, ale nie wiem gdzie mogę to zmienić na utf8 , bo wjak widać na screenie jest kodowanie cp1252 west european latin1

komentarz 9 maja 2023 przez VBService Ekspert (252,660 p.)
komentarz 9 maja 2023 przez tetkris Nowicjusz (230 p.)
przeniesione 9 maja 2023 przez Arkadiusz Waluk

Mam dwa własne serwery i na nich wszystko mi działa, ale już na hostingu, co mam zrobić jak tam nie mam żadnych praw.

komentarz 9 maja 2023 przez VBService Ekspert (252,660 p.)
Spróbuj opisać Twój problem administratorowi serwera (hostingu), który będzie mógł takie ustawienia (zmiana strony kodowej) dla Ciebie zastosować.
1
komentarz 9 maja 2023 przez tetkris Nowicjusz (230 p.)
napisałem, zobaczymy co powiedzą i czy będą chcieli zmienić bo mogą się odpysknąć żebym sobie kupił vps jak wymyślam.
komentarz 9 maja 2023 przez VBService Ekspert (252,660 p.)
edycja 9 maja 2023 przez VBService

w jakim języku "operujesz" na serwerze (backend)? php?


Dobra w tagach masz: php wink

komentarz 9 maja 2023 przez tetkris Nowicjusz (230 p.)
chyba fullstack bo html css no i na stronie jest formularz kontaktowy napisany w php i wysyła on dane do bazy danych mariadb,

2 odpowiedzi

+3 głosów
odpowiedź 9 maja 2023 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 9 maja 2023 przez tetkris
 
Najlepsza

Pokaż w jaki sposób łączysz się do bazy danych, w sensie kod połączenia. Obstawiam, że jest to kwestia samego kodowania połączenia, a więc w przypadku mysqli powinieneś użyć set_charset np. jak podano tutaj: https://www.php.net/manual/en/mysqli.set-charset.php#refsect1-mysqli.set-charset-examples

komentarz 9 maja 2023 przez tetkris Nowicjusz (230 p.)
<?php
$servername = "localhost";
$username = "tetkris";
$password = "Admin1";
$dbname = "tetkris";


$conn = new mysqli($servername, $username, $password, $dbname);


if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

if(isset($_POST['submit'])){
   
    $note = $_POST['note'];
    $sql = "INSERT INTO notes (note) VALUES ('$note')";
    if ($conn->query($sql) === TRUE) {
      echo 'Notatka została dodana. <br>
        <form action="index.html">
            <button>
                Wróć do strony głównej
            </button>
        </form>';
    } else {
      echo "Błąd: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>

<!DOCTYPE html>
<html lang="pl">
	<head>
	    <meta charset="utf-8">
		<title>Last Epoch Fansite</title>
	    <link rel="stylesheet" href="style.css">
	</head>
	<body>
		
		<div class="container">
			
			<div class="logo">
					<h3>
						Last Epoch Guide
					</h3>
			</div>

			<div class="menu">
			</div>
			
			<div class="content_sites">

				<div class="but_class">
					<form action="../index.html">
						<button>
							Wróć
						</button>
					</form>
				</div> 
					
				<div id="textareaa">
					
					<form method="post" action="">
						<label for="note">Napisz do mnie:</label>
						<br>
						<textarea id="note" name="note" rows="4" cols="50">
							
						</textarea>
						<br>
						<input type="submit" name="submit" value="Dodaj">
					</form>
				</div>
			</div>
		</div>
	</body>
</html>		

 

komentarz 9 maja 2023 przez Arkadiusz Waluk Ekspert (287,950 p.)
No to jak wyżej napisałem - po nawiązaniu połączenia, ale przed wykonaniem zapytań, np. w linii 14 wywołaj na obiekcie połączenia $conn metodę set_charset() podając właściwe kodowanie. Następnie spróbuj wtedy dodać nowy rekord (już dodanych samo nie zmieni) i zobacz.

Inna rzecz, że zapytanie w linii 18 nie powinno być w taki sposób robione, bo wrzucając bez żadnej walidacji i prosto w treść zapytania to co zostało przesłane od użytkownika, narażasz się na atak sql injection. Należałoby tutaj użyć bindowania parametrów, czyli zapytanie wysłać osobno i parametry osobno. Ale nie ma to wpływu na główny problem z pytania.
1
komentarz 9 maja 2023 przez tetkris Nowicjusz (230 p.)

No panocku ,kochany :) Widzisz to :P

komentarz 9 maja 2023 przez tetkris Nowicjusz (230 p.)
edycja 9 maja 2023 przez tetkris

Na moich serwerach dedykowanych nie mam takiego problemu bo mogę sobie ustawić kodowanie znaków na to co mi potrzeba. Dzięki bardzo za pomoc.

 

komentarz 9 maja 2023 przez Arkadiusz Waluk Ekspert (287,950 p.)
Spoko. Ustawienie po stronie aplikacji ma taki plus, że zadziałałoby niezależnie od serwera jak widać, więc też nie zaszkodzi.
0 głosów
odpowiedź 9 maja 2023 przez VBService Ekspert (252,660 p.)

napisałem, zobaczymy co powiedzą i czy będą chcieli zmienić bo mogą się odpysknąć żebym sobie kupił vps jak wymyślam.

 

jak administracja serwera odmówi "współpracy"  wink spróbuj tak

AFAIK, kodowanie CP1252 West European zawiera polskie znaki diakrytyczne, takie jak: ą, ć, ę, ł, ń, ó, ś, ź, ż , więc z poziomu php spróbuj użyć iconv np.

$utf8_text = "Tekst z formularza - kodowanie utf-8";
$cp1252_text = iconv("UTF-8", "CP1252//IGNORE", $utf8_text);
// sprawdzasz czy dane są prawidłowe
$name = $_POST['name'];


$name = iconv("UTF-8", "CP1252//IGNORE", $name);
$sql = "INSERT INTO tabela (...) VALUE ($name, ...)";

 

Podobne pytania

0 głosów
0 odpowiedzi 999 wizyt
pytanie zadane 28 sierpnia 2018 w SQL, bazy danych przez czujek22 Dyskutant (7,670 p.)
0 głosów
0 odpowiedzi 126 wizyt
+1 głos
2 odpowiedzi 626 wizyt
pytanie zadane 6 lipca 2020 w PHP przez Hype Początkujący (340 p.)

92,550 zapytań

141,392 odpowiedzi

319,519 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...