Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem fpdf cestina

Zdrawim
řeším výpis dat z mysql do pdf...
nejdrive jsem si vtvoril vlastni font prave kvuli cestine a diakritika mi s pomoci iconv funguje kdyz napisu text manualne ale kdyz ho vypisu z mysql tak mi to nevypise zpravne diakritiku

funkcni:
$this->Cell($w[0],6,iconv('utf-8', 'iso-8859-2', 'sěščřžýáíéůú ĚŠČŘŽÝÁÍÉŮÚ'),'1');

nefunkcni:
$this->Cell($w[0],6,iconv('utf-8', 'iso-8859-2', $row['ulice']),'1');

Poradte prosim nekdo uz nevim co stim..

Budu vděčný za každou radu ;)

Předmět Autor Datum
Asi v tom $row['ulice'] nemas UTF-8. vypis si znak(y) ako ASCII hodnotu a budes vediet v jakom forma… nový
MM.. 24.04.2012 00:24
MM..
Kdysi jsme se v tom patlal podobným způsobem pomocí iconv, pak jsem přešel na mpdf a problémy s kódo… nový
Titulkář 24.04.2012 07:48
Titulkář
jj diky moc ale ja uz to mam rozdelany v tom fpdf byl bych rad kdyby se to podarilo v tom... urcite… nový
profec 24.04.2012 12:54
profec
zjistil jsem že je to vypisem z mysql jinak vse funguje... resil jste to prosim nekdo??? :) nový
profec 24.04.2012 13:28
profec
uz si si vypisal tie bajty toho pola, alebo cakas na spasenie? nový
MM.. 24.04.2012 14:04
MM..
nebyl jsem tu .. a koukal jsem primo do databaze a tam to mam v 'utf8_czech_ci' nový
profec 24.04.2012 18:03
profec
Vypis si jednotlive bajty z $row['ulice'] (v nejakom cykle). Potom budes vedet ze v jakom to je kodo… nový
MM.. 24.04.2012 18:22
MM..
... a potom budes vediet ze mas googlit slova napr. mysql_fetch_row UNICODE a najdes napr. http://st… nový
MM.. 24.04.2012 18:29
MM..
toto semsamozdrejme take zkusil a stejne to diakritiku nevypisuje spravne... netusim cim to je ale d… nový
profec 24.04.2012 22:53
profec
a jak si to zkusil? Nechces sem dat trochu viac jak 1 riadok zdrojaku? Ked ti ten zdrojak nejde. Jas… nový
MM.. 24.04.2012 23:04
MM..
kouknul jsem se do databaze jak je to k tomu radku nastavene... zde je zdrojek: <?php require('fpd… nový
profec 25.04.2012 12:13
profec
Nemas kukat do databaze ale musis dat riadok mysql_query("SET NAMES utf8"); za ten mysqli_connect('l… nový
MM.. 25.04.2012 18:12
MM..
A ked ten riadok nechces, tak musis nieco prenastavit/pridat v php.ini co sa tyka SQL, ale netusim c… nový
MM.. 25.04.2012 18:14
MM..
prave ze mysql_query("SET NAMES utf8"); jsem skousel... je to divny a v mysql tam mam utf8... poslední
profec 26.04.2012 00:25
profec

Vypis si jednotlive bajty z $row['ulice'] (v nejakom cykle). Potom budes vedet ze v jakom to je kodovani, v unicode to asi nebude ked to nefunguje (ale tym vypisom si to overis ze ci fakt, prip. budes vediet jaku mas robit konverziu). Takze potom budes vedet napr. ze sa to skonvertovalo na nejake ine kodovanie tam, kde to pole $row['ulice'] vzniklo. Napriklad.

... a potom budes vediet ze mas googlit slova napr. mysql_fetch_row UNICODE a najdes napr.
http://stackoverflow.com/questions/1198701/storing -and-displaying-unicode-string-using-php-and-mysql
kde je zaujimavy riadok

$result = mysql_query("SET NAMES utf8"); //the main trick

Neviem ci to je to co potrebujes ptz s mysql nerobim, ale to co ti tu prezentujem je normalny postup vyvojara pri rieseni problemu. Najprv analyza (dat/premennych/apod) -> podla vysledku analyzy najdes riesenie.

kouknul jsem se do databaze jak je to k tomu radku nastavene...

zde je zdrojek:

<?php
require('fpdf/fpdf.php');

class PDF extends FPDF
{

// Better table
function ImprovedTable($header)
{
// Column widths
$w = array(10, 15, 30, 20, 20, 20, 15, 15, 40, 10);
// Header
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
// Data

$dbc=mysqli_connect('localhost','xxx','xxx','xxx') ;
//mysql_query("SET character_set_results=CP1250");

$text = iconv('utf-8', 'iso-8859-2','sěščřžýáíéůú ĚŠČŘŽÝÁÍÉŮÚ');
$query_pdf = "SELECT * FROM centr_vchody";

$pdf_result = mysqli_query($dbc,$query_pdf) or die(mysql_error());

while($row = mysqli_fetch_array($pdf_result))
{

$this->Cell($w[0],6,iconv('utf-8', 'iso-8859-2', ''.$row['ulice'].''),'1');
$this->Cell($w[1],6,$text,'1');
$this->Cell($w[2],6,number_format($row[2]),'1',0,' R');
$this->Cell($w[3],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[4],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[5],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[6],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[7],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[8],6,number_format($row[3]),'1',0,' R');
$this->Cell($w[9],6,number_format($row[3]),'1',0,' R');
$this->Ln();
}
// Closing line
$this->Cell(array_sum($w),0,'','T');
}

}

$pdf = new PDF();
// Column headings
$header = array('Byt', 'Patro', iconv('utf-8', 'iso-8859-2','Služba'), 'Telefon', 'Obj. ', 'Konk.', iconv('utf-8', 'iso-8859-2','Služba'), 'Cena', iconv('utf-8', 'iso-8859-2','Poznámky'), 'Kont');

// Data loading
define('FPDF_FONTPATH','../vchody/fpdf/font/');
$pdf->AddFont('muj_font', '', 'arial.php');
$pdf->SetFont('muj_font','',8);

$pdf->AddPage();
$pdf->ImprovedTable($header);
$pdf->AddPage();
$pdf->Output();
?>

A ked ten riadok nechces, tak musis nieco prenastavit/pridat v php.ini co sa tyka SQL, ale netusim co :) Viz napr. http://www.php.de/datenbanken/45586-utf-8-nur-mit- set-names.html

in der Regel wird der Zeichensatz des Betriebssystems in der MySQL-Client-Bibliothek (auf Windows php_mysql.dll) übernommen. Ist in der php.ini nichts anderes für PHP eingestellt, so kann es durchaus sein, dass die Verbindung unter Berücksichtigung des Zeichensatzes des OS erstellt wird. Konfiguriere dein PHP einfach mit UTF-8, dann sollte das klappen.

Zpět do poradny Odpovědět na původní otázku Nahoru