zintis8789 Posted December 2, 2009 Report Share Posted December 2, 2009 Ievietoju datubāzē tekstu rādās ar garumzīmem. Bet kad es izvadu datus uz manu lapu garumzīmju vietās radas ? zīmes. PHP Kods: <? mysql_query("SET jaunumi SET utf8"); $result1 = mysql_query("SELECT * FROM `jaunumi`ORDER BY `jaunumi`.`kad` DESC LIMIT 0, 1"); $row = mysql_fetch_assoc($result1)or die(mysql_error()); ?> <? utf8_decode($row[zina]); if(strlen($row[zina])>50) { $row['zina'] = substr($row[zina], 0, 130) . ".."; echo $row['zina']; }else{ echo $row['zina']; } ?> Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 2, 2009 Report Share Posted December 2, 2009 Ir jāizmanto mysql_set_charset() nevis tas pigors, kas tev tur ir. + protams pašai tabulai jabūt ar utf-8 kodējumu. Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted December 2, 2009 Report Share Posted December 2, 2009 Kas tad tas? mysql_query("SET jaunumi SET utf8"); Quote Link to comment Share on other sites More sharing options...
zintis8789 Posted December 2, 2009 Author Report Share Posted December 2, 2009 mysql_query("SET jaunumi SET utf8"); Vienā PHP failā bija šāds piemērs: mysql_query("SET NAMES utf8"); Domāju parveidošu un būs garumzīmes :D Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 2, 2009 Report Share Posted December 2, 2009 Nevajadzēja neko pārveidot... - http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html Quote Link to comment Share on other sites More sharing options...
zintis8789 Posted December 2, 2009 Author Report Share Posted December 2, 2009 Vēl jo projām radas tās jautājuma zīmes.. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted December 2, 2009 Report Share Posted December 2, 2009 Kāds kodējums ir tavām tabulām? Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted December 2, 2009 Report Share Posted December 2, 2009 Varbūt tādēļ, ka tava "pārveidojuma" dēļ datu bāzē ierakstītais NAV utf8 kodējumā... ;) Quote Link to comment Share on other sites More sharing options...
thesnarkie Posted December 2, 2009 Report Share Posted December 2, 2009 (edited) Vienkārši aiz konektora iemauc šito: mysql_query("SET NAMES UTF8 COLLATE utf8_general_ci"); Un pārliecinies, ka tabulām ir pareizais kodējums. Edited December 2, 2009 by thesnarkie Quote Link to comment Share on other sites More sharing options...
zintis8789 Posted December 2, 2009 Author Report Share Posted December 2, 2009 (edited) Problēma atrisināta. Edited December 2, 2009 by zintis8789 Quote Link to comment Share on other sites More sharing options...
thesnarkie Posted December 4, 2009 Report Share Posted December 4, 2009 (edited) Negribu veidot jaunu topiku, tāpēc pajautāšu šeit. Tātad ar šo te: ... onclick="return Share.showComment({pid:<? echo $share_id ?>,target:'view_comments<? echo $share_id ?>'}); return false;" ... skripts ielādēt komentārus no php faila kaut kādā div elementā un zem tiem visiem komentāriem arī vienu piebildīti. Komentāri parādās ar garumzīmēm, jo man ir uzlikts tas encoding, nolasot komentārus no db, (^ posts augstāk), bet to piebildīti, kas nenāk no datubāzes viņš ievieto bez garumzīmēm. Kā to varētu salabot? Es sākumā domāju, ka ar utf8_encode, bet nedarbojās. Edited December 4, 2009 by thesnarkie Quote Link to comment Share on other sites More sharing options...
2easy Posted December 4, 2009 Report Share Posted December 4, 2009 un no kurienes tad nāk tā "piebildīte"? pat ja tā nav tajā pašā kodējumā kā komentāri no db, tad to var pārkonvērtēt ar iconv(). jebkurā gadījumā skaties, lai visur (db laukos, php kodā un visbeidzot htmlā) dati būtu tajā pašā kodējumā. ja kkur atšķiras, tad jākonvertē. tipiska kļūda ir, kad meta informācijā norāda vienu kodējumu, bet dati patiesībā ir citā kodējumā. piemēram, htmlā iebliež <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />, bet php/html failā datus saglabā kādā nacionālajā vienbaitu kodējumā. vai arī sqlā CREATE TABLE definē ar COLLATE utf8_latvian_ci, bet insertojot php stringos dati nemaz nav utf8... simple example, kā windows-1257 "ā" tiek konvertēts uz utf8 "ā". varbūt, ka noder izpratnei... <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php $cAnsi = chr(226); // vienbaitu kodējumā (windows-1257) burtu "ā" reprezentē baits 226 $cUtf8 = iconv('windows-1257', 'utf-8', $cAnsi); // konertējot uz multibaitu kodējumu (utf8) burtu "ā" reprezentē jau 2 baiti 196,129 echo $cAnsi . '<br />'; // šeit attēlojas ķeburs, jo baitam 226 utf8 kodējumā neatbilst neviens rādāms simbols echo $cUtf8 . '<br />'; // šeit normāli attēlojas "ā", jo baiti 196,129 atbilst utf8 simbolam "ā" // debug info (parāda no kādiem baitiem sastāv abi stringi) echoBytes($cAnsi); echoBytes($cUtf8); function echoBytes($s) { echo '<textarea rows="10" cols="60">'; for ($i = 0; $i < strlen($s); $i++) echo $i + 1 . ') ' . ord($s[$i]) . ' ' . $s[$i] . "\n"; echo '</textarea><br />'; } ?> starp citu <? echo $share_id ?> var uzrakstīt īsāk <?= $share_id ?> tas tā priekš tiem, kam patīk small & simple ;) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.