Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Mysql][mpdf] kodowanie polskich znakow php, mysql, mpdf
Forum PHP.pl > Forum > PHP
pdfpl
czesc mam nastepujacy problem.
mam aplikacje w php ktora dodaje rekordy do bazy. uzytkownik wpisuje teksty w inputach i texareach. wszystkie skrypty sa w utf-8

  1. //fragment z kodowaniem pliku
  2. header("Content-Type: text/html; charset=utf8_polish_ci"); //utf8_polish_ci
  3. ini_set('default_charset', 'utf8_polish_ci');
  4.  
  5. //fragment dodajacy rekord:
  6. $inneOsiagniecie_get = $_GET['inneOsiagniecie'];
  7. echo mb_detect_encoding($inneOsiagniecie_get, 'UTF-8, ISO-8859-1, ISO-8859-2', true);
  8. mysql_query('SET NAMES utf8_polish_ci');
  9. mysql_query('SET CHARACTER_SET utf8_polish_ci');
  10. mysql_query("SET collation_connection = utf8_polish_ci");
  11. mysql_query("INSERT INTO inne_osiagniecia (id, link, osiagniecie) VALUES ('', '$zm_linkzbazy', '$inneOsiagniecie_get')");


dla testu dodalem fragment sprawdzajacy kodowanie stringu wstawianego do bazy
  1. echo mb_detect_encoding($inneOsiagniecie_get, 'UTF-8, ISO-8859-1, ISO-8859-2', true);


wynik to iso-8859-1

wie ktoś może dlaczego?

problem jest w tym ze gdy potem generuje pdf'a uzywajac klasy mpdf w miejscach gdzie maja byc polskie znaki w pdf-ie w rekordach dodanych przez aplikacje widoczne sa krzaki, co ciekawe w bazie sa polskie znaki i skrypt php wyswietlacy rekordy widza polskie znaki. Jedynie klasa mpdf ma problem z tak dodanymi rekordami.

DLACZEGO?
gargamel
W FPDFie jest podobny problem, który można rozwiązać zmieniając kodowanie poprzez np: iconv("utf-8", "windows-1250", $string)
Może u Ciebie będzie podobnie
pdfpl
niestety obawaim sie ze to nie takie proste. tego tez wczesnierj probowalem ale nie dalo rozwiazania. zarowno iconv na strungu wstawainego do bazy jak i iconv na stringu wysweitlanego w pdf-ie nie pomagaja. Ma ktos moze jakichs inny pomysł jak wstawiac stringi w kodowaniu utf-8?

rozwiazaniem okazalo sie
- usuniecie wszelkich kodowan z pliku (zapytania do bazy danych),
- ustawienie $mpdf=new mPDF('utf-8','A4','','');,
- ustawienie formatu kodowania pliku na utf-8 w notepad++;
- ustawienie pliku polaczenia w nastepujacy sposob:
header("Content-Type: text/html; charset=utf-8");
ini_set('default_charset', 'utf-8');
//polaczenie MySQL
$serwer="...";
$login="...";
$haslo="...";
$baza="...";
mysql_connect($serwer, $login, $haslo) or die(mysql_error());
//test
if (!mysql_connect($serwer, $login, $haslo))
die("Can't connect to database");
if (!mysql_select_db($baza))
die("Can't select database");
//polskie znaki z bazy
mysql_query('SET NAMES utf8');

rozwiazaniem okazalo sie
- usuniecie wszelkich kodowan z pliku (zapytania do bazy danych),
- ustawienie $mpdf=new mPDF('utf-8','A4','','');,
- ustawienie formatu kodowania pliku na utf-8 w notepad++;
- ustawienie pliku polaczenia w nastepujacy sposob:
header("Content-Type: text/html; charset=utf-8");
ini_set('default_charset', 'utf-8');
//polaczenie MySQL
$serwer="...";
$login="...";
$haslo="...";
$baza="...";
mysql_connect($serwer, $login, $haslo) or die(mysql_error());
//test
if (!mysql_connect($serwer, $login, $haslo))
die("Can't connect to database");
if (!mysql_select_db($baza))
die("Can't select database");
//polskie znaki z bazy
mysql_query('SET NAMES utf8');
morthan
Rozwiązanie prawidłowe. Mi też pomogło.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.