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

Polskie znaki w PHP

Object Storage Arubacloud
0 głosów
234 wizyt
pytanie zadane 12 listopada 2019 w PHP przez kingkushlee Gaduła (3,960 p.)

Witam, mam bazę danych, gdzie wszystko jest kodowane w utf8_general_ci i taki kod PHP:


<?php

	require_once("database_config.php");
	require_once("request.class.php");

	$req = new Request($db_host, $db_user, $db_pass, $db_name);
	$query = "SELECT * FROM tabela ORDER BY data DESC";
	$req->executeUpdate("SET NAMES utf8");
	$req->executeUpdate("SET CHARACTER_SET utf8_general_ci");
	$result = $req->executeQuery($query);
	$black = true;

	for ($i = 0; $i <= $result->num_rows - 1; $i++) {
		$row = $result->fetch_assoc();
		$title = $row['tytul'];
		$id = $row['id'];
		$title = mb_substr($title, 0, 22) . ' <a href="#" class="link">...</a>';

		if ($black == true) {
			echo '<div class="col-12 bg-dark-hover">' . $title . 
			'<div class="float-right"><span class="border icons text-warning" panel-action="edit" panel-id="' . $id . '"><i class="icon-pencil"></i></span>
			<span class="border icons text-danger" panel-action="delete" panel-id="' . $id . '"><i class="icon-cancel"></i></span></div></div>';
			$black = false;
		}	

		else {
			echo '<div class="col-12 information-light">' . $title . 
			'<div class="float-right"><span class="border icons text-warning" panel-action="edit" panel-id="' . $id . '"><i class="icon-pencil"></i></span>
			<span class="border icons text-danger" panel-action="delete" panel-id="' . $id . '"><i class="icon-cancel"></i></span></div></div>';
			$black = true;
		}
	}

Polskie znaki zastępuje �. Ten plik jest ładowany ajaxem do strony HTML. Jak to naprawić?

1 odpowiedź

0 głosów
odpowiedź 12 listopada 2019 przez mati2762 Mądrala (5,510 p.)
w MySQLi jest $mysqli->set_charset("utf8") do ustawiania. nie wiem czego używasz do komunikacji z bazą
komentarz 12 listopada 2019 przez kingkushlee Gaduła (3,960 p.)

Własnej klasy

<?php

	//ini_set('display_errors', 0);

	class Request {

		private $connection;

		function __construct($host, $user, $pass, $name) {
			try {
				$this->connection = new mysqli($host, $user, $pass, $name);
				if ($this->connection -> connect_errno != 0) 
					throw new Exception($this->connection -> connect_errno);
			} catch (Exception $e) {
				echo $e;
			}
		}

		function executeQuery($query) {
			$this->connection->query('SET NAMES utf8');
			$this->connection->query('SET CHARACTER_SET utf8_unicode_ci');
			if ($result = $this->connection->query($query))
				return $result;
			else return NULL;
			$this->disconnect();
		}

		function executeUpdate($query) {
			$this->connection->query('SET NAMES utf8');
			$this->connection->query('SET CHARACTER_SET utf8_unicode_ci');
			if ($this->connection->query($query)) {
				return true;
			} else return false;
			$this->disconnect();
		}

		function getMinimalId($table) {
			$query = "SELECT id FROM " . $table;
			if ($result = $this->connection->query($query)) {
				$row = $result->fetch_assoc();
				return $row['id'];
			} else return 0;
			$this->disconnect();
		}

		function getLastId($table) {
			$query = "SELECT MAX(id) FROM " . $table;
			if ($result = $this->connection->query($query)) {
				$row = $result->fetch_assoc();
				return $row['MAX(id)'];
			} else return 0;
			$this->disconnect();
		}

		function getNextId($id, $table) {
			$found = false;
			$ids = $id;
			while ($found == false) {
				$ids++;
				$query = "SELECT id FROM " . $table . " WHERE id='$ids'";
				if ($result = $this->connection->query($query)) {
					if ($result->num_rows == 1) {
						$found = true;
						$row = $result->fetch_assoc();
						$foundid = $row['id'];
						$result->free_result();
						return $foundid;
					}
				}
			}

			return null;
		}

		function disconnect() {
			$this->connection->close();
		}

	}

 

komentarz 13 listopada 2019 przez mati2762 Mądrala (5,510 p.)
to w konstruktorze po poprawnym połączeniu ustaw

$connection->set_charset("utf8")
komentarz 13 listopada 2019 przez mati2762 Mądrala (5,510 p.)
Dlaczego zrywasz połączenie po zapytaniu?

nie będziesz mógł wykonać ponownie zapytania.

Powinieneś zrywać połączenie w destruktorze
komentarz 13 listopada 2019 przez kingkushlee Gaduła (3,960 p.)
EDIT: Polskie znaki raczej się ładują, tylko jak mam o taki fragment rekordu: "posługujące", to w resulcie widzę: "posługuj�".
komentarz 13 listopada 2019 przez mati2762 Mądrala (5,510 p.)
komentarz 13 listopada 2019 przez kingkushlee Gaduła (3,960 p.)
Dalej się nie pokazuje.

Podobne pytania

0 głosów
1 odpowiedź 760 wizyt
pytanie zadane 27 sierpnia 2020 w PHP przez Hansik Nowicjusz (170 p.)
0 głosów
1 odpowiedź 553 wizyt
pytanie zadane 4 stycznia 2020 w PHP przez MAXIM7 Obywatel (1,990 p.)
0 głosów
2 odpowiedzi 504 wizyt
pytanie zadane 16 września 2018 w PHP przez Akiz521 Początkujący (480 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 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!

...