Jump to content
php.lv forumi

Mysql kļūme


zintis8789

Recommended Posts

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'];
}
?>


Link to comment
Share on other sites

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 by thesnarkie
Link to comment
Share on other sites

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 />';
}
?>

enc_1259962139.png

 

starp citu

<? echo $share_id ?>

var uzrakstīt īsāk

<?= $share_id ?>

tas tā priekš tiem, kam patīk small & simple ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...