Krzaczki zamiast polskich liter

0

Jest taka sprawa mianowicie zamiast polskich znaków wyskakują mi takie znaki ?�??? ??� a tutaj macie udowodnienie że kodowanie znaków jest ustawione na polskie i utf-8

1 zdjęcie
*title
2 zdjęcie
*title
3 zdjęcie
*title
4 zdjęcie
*title
5 zdjęcie
*title

-- phpMyAdmin SQL Dump
-- version 4.7.4
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Czas generowania: 07 Lut 2018, 11:29
-- Wersja serwera: 10.1.29-MariaDB
-- Wersja PHP: 7.1.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `m6350_projekta`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `s_autor`
--

CREATE TABLE `s_autor` (
  `id_autor` int(11) NOT NULL,
  `nazwisko_autora` text COLLATE utf8_polish_ci NOT NULL,
  `imie_autora` text COLLATE utf8_polish_ci NOT NULL,
  `uwagi_do_autora` text COLLATE utf8_polish_ci,
  `aktywny` int(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

--
-- Zrzut danych tabeli `s_autor`
--

INSERT INTO `s_autor` (`id_autor`, `nazwisko_autora`, `imie_autora`, `uwagi_do_autora`, `aktywny`) VALUES
(1, 'ŁÓŻŹĆ', 'ĄĘÓ', NULL, 1);

--
-- Indeksy dla zrzutów tabel
--

--
-- Indexes for table `s_autor`
--
ALTER TABLE `s_autor`
  ADD PRIMARY KEY (`id_autor`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT dla tabeli `s_autor`
--
ALTER TABLE `s_autor`
  MODIFY `id_autor` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
0

Pewnie nie masz odpowiedniego kodowania ustawionego w znacznikach meta.

0

właśnie mam

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
0
Kar Jsf napisał(a):

właśnie mam

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

A tak?

HTML5: <meta charset="UTF-8">
0

Jakie masz kodowanie Twojego pliku sql?

0

utf-8

0

Podczas łączenia się z bazą wykonujesz set names ...?

0
'host' => 'localhost',
 'port' => '3306',
 'user' => 'root',
 'pass' => '',
 'db' => 'm6350_projekta',
 'db_type' => 'mysql',
 'encoding' => 'utf-8' 
);

try
 
{
 
 $dsn = $db_config['db_type'] .
 
 ':host=' . $db_config['host'] .
 
 ';port=' . $db_config['port'] .
 
 ';encoding=' . $db_config['encoding'] .
 
 ';dbname=' . $db_config['db'];
0

dlaczego to nie działa jest wszystko dobrze a to nie działa

0

Jeżeli potrzeba kod to on jest na git hubie https://github.com/kry008/e-biblioteka

0

Sprawdź w strukturze tabeli czy nie masz przypadkiem ustawionego innego collation w problemowej kolumnie. W Twoim przypadku będzie to pewnie tabela z użytkownikami

0

jest wszystko utf8_polish_ci w tabelach gdzie jest treść

0

najlepiej to postaw wszystko od początku z prawidłowymi ustawieniami zgodnie z odp. w tym wątku

0

i nadal ten sam błąd

0

możesz zbadać problematyczne stringi

$data = " Aąęśó ♡+♡=❤²";
print_r(unpack("H*", $data));
0

coś takiego wyszło
Array ( [1] => 2041c485c499c59bc3b320e299a12be299a13de29da4c2b2 )

0

Może wykonujesz na tych danych jakieś operacje które nie są multibyte-safe? Może nie dodajesz flagi /u do preg_replace()? Może nie używasz mb_substr(), tylko substr().

0

nie używam tej funkcji

0

Chodzi mi o to że być może używasz jakiejś która nie jest multibyte-safe.

0

nie tylko normalne ciągi znaków

0

max 10 znaków (cyfry tylko lub litery tylko)

0

Niektóre funkcje w PHP nie są bezpieczne dla kodowań które mają więcej niż 1 bajt na znak (np utf8). Przykładem jest np substr, strpos albo strlen. Te najczęściej mają swoje odpowiedniki które są multibyte-safe. Potencjalnie każda funkcja której użyłeś może być nie mb-safe.

Na przykład:

screenshot-20180207171218.png

0

czyli jak to używać?

0

Przecież Ci napisałem:

Te najczęściej mają swoje odpowiedniki które są multibyte-safe.

0

Ale z tego co widzę na Twoim githubie to faktycznie nie przeprowadzasz żadnych takich operacji, więc to raczej fałszywy trop.

0

dla tego udostępniłem ten kod żebyście mogli go zobaczyć i czy macie jeszcze jakieś pomysły jak to rozwiązać?

0
Kar Jsf napisał(a):

coś takiego wyszło
Array ( [1] => 2041c485c499c59bc3b320e299a12be299a13de29da4c2b2 )

hmm, nie do końca o to chodziło, zmienna $data powinna zawierać tekst uzyskany z bazy danych, chcemy zbadać reprezentację bajtową problematycznego tekstu

0

Array ( [1] => 3ff3f33f3f3f )
// To jest w bazie zapisane jako
łóóęćź

0

ja mam takie coś za każdym połączeniem
$this->sth = $this->prepare('SET NAMES utf8');
$this->sth->execute();

Twój parametr encoding = utf-8 nie działa próbowałem

class Database extends PDO
{

    private $sth;
    private static $Instance;
    public $Result = true;
    public $Exception = true;    
    
    public function __construct()
    {
        try
        {
            parent::__construct(DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME , DB_USER, DB_PASSWORD);
            $this->sth = $this->prepare('SET NAMES utf8');
            $this->sth->execute();
        
} catch (Exception $ex)
        {
			if($this->Exception)
				new myException('DATABASE CONNECTION ERROR','');
			else
				print $this->sth->errorInfo( )[2];
        }
    }


0

Spróbuj użyć funkcji utf8_decode() tam gdzie robisz echo.

Np tak:

echo '<li>'.utf8_decode($row['imie_czytelnika']);

1 użytkowników online, w tym zalogowanych: 0, gości: 1