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 ;)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
zjistil jsem že je to vypisem z mysql jinak vse funguje... resil jste to prosim nekdo??? :)
profec 24.04.2012 13:28
profec
uz si si vypisal tie bajty toho pola, alebo cakas na spasenie?
MM.. 24.04.2012 14:04
MM..
nebyl jsem tu .. a koukal jsem primo do databaze a tam to mam v 'utf8_czech_ci'
profec 24.04.2012 18:03
profec
... a potom budes vediet ze mas googlit slova napr. mysql_fetch_row UNICODE a najdes napr. http://st…
MM.. 24.04.2012 18:29
MM..
toto semsamozdrejme take zkusil a stejne to diakritiku nevypisuje spravne... netusim cim to je ale d…
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…
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…
profec 25.04.2012 12:13
profec
A ked ten riadok nechces, tak musis nieco prenastavit/pridat v php.ini co sa tyka SQL, ale netusim c…
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

... 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