Utf-8 problem

poruka: 13
|
čitano: 1.781
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
utf-8 problem

Vadim neke podatke iz mysql baze ali mi znakove s kvačicama na stranici prikazuje s "�"   i w3c validator kaze da je neispravna stranica na liniji 37 a to je ovo di pocinje tablica  
echo "<table class='myTable'>      kontam da je problem u utf-u i znakovima ali neznam kako to rjesiti ?

 

<?php
$con=mysqli_connect("localhost","user","xxx","xxx");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM a_sve ORDER BY kateg");


echo "<table class='myTable'>
<tr>
<th>Kategorija</th>
<th>Model</th>
<th>Opis</th>
<th>Na lageru</th>
<th>Cijena bez PDV-a (Kn)</th>

<th>Detalji</th>
</tr>";

            


while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['kateg'] . "</td>";
  echo "<td>" . $row['model'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['quantity'] . "</td>";
  echo "<td>" . $row['price'] . "</td>";
  }
echo "</table>";

mysqli_close($con);
?>

Poruka je uređivana zadnji put uto 22.4.2014 23:58 (skip).
 
0 0 hvala 0
10 godina
neaktivan
offline
Utf-8 problem

U while petlji zaboravio si zatvoriti redak u tablici sa </tr>. Mislim da je to ono što javlja grešku.

 

Što se tiče utf-8 provjeri da li ti je postavljen u head-u <meta charset="utf-8"/>. Pogledaj i kako ti je tablica u koju spremaš namještena tj. koji charset ima, mislim da bi trebala biti na ut8_general_ci ili nešto slično tome.

www.lakotuts.com
 
0 0 hvala 0
15 godina
offline
Re: Utf-8 problem

Hvala Lako Tuts,

skonto sam da treba dodati iza :

$result = mysqli_query($con,"SELECT * FROM a_sve ORDER BY kateg");

//ovo za utf

mysqli_set_charset($con,"utf8");

 

 

medutim sada ima jedan cudan problem, kada iz <head> a izrezem <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   onda tablicu normalno vadi s hrv znakovima ali ostali text na stranici nevaljaju hrv znakovi, a opet ako odrezem   mysqli_set_charset($con,"utf8");    onda je problem obratan tj text na stranici vidi hrv znakove ali tablica iz baze nevidi hrv znakove.

Poruka je uređivana zadnji put čet 24.4.2014 1:59 (skip).
14 godina
neaktivan
offline
Utf-8 problem

Probaj datoteku spremiti kao UTF-8. 

 

U notepad++, imaš u zbornku encoding, pa tamo convert to UTF-8 without BOM.

 
0 0 hvala 0
13 godina
neaktivan
offline
Utf-8 problem

Dodaj pri vrhu datoteke ili definiši globalno.

 

header('Content-Type: text/html; charset=utf-8');

 
0 0 hvala 0
15 godina
offline
Re: Utf-8 problem

ovo je  vec napravljeno u notepadu UTF-8 without BOM.  i nepomaze

15 godina
offline
Re: Utf-8 problem

@sixr isprobo nepomaze. evo kompletan kod, zanimljivo je da cim obrisem iz headera : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

u tablici se svi hrvatski znakovi normalno vide ali text iznad tablice (ččččččć ššš  žžžžžž)  nevalja. I kad taj red vratim nazad onda obratno, hrv znakovi u tablici nevaljaju a gornji text valja.

 

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="sample.css" type="text/css" />
</head>

<body>
ččččččć ššš  žžžžžž

<?php
$con=mysqli_connect("localhost","user","xxx","xxxxx");
// Check connection

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM a_sve ORDER BY kateg");


echo "<table class='myTable'>
<tr>
<th>Kategorija</th>
<th>Model</th>
<th>Opis</th>
<th>Na lageru</th>
<th>Cijena bez PDV-a (Kn)</th>

<th>Detalji</th>
</tr>";


while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['kateg'] . "</td>";
  echo "<td>" . $row['model'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['quantity'] . "</td>";
  echo "<td>" . $row['price'] . "</td>";

 
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>


</body>
</html>

Poruka je uređivana zadnji put čet 24.4.2014 21:58 (skip).
14 godina
offline
Utf-8 problem
Hm, kako se spremaju podaci u tablicu u mysql-u? Pokušaj ovo, nakon spajanja izvrši query: set names 'cp1250' ako to ne prođe pokušaj sa set names 'utf8' I nakon toga svoj query "select ..."
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Utf-8 problem

AKo je to čitav kod, onda ti fali na vrhu HTML.

 

Probaj ovako

 

<!DOCTYPE html>
<html lang="hr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="sample.css" type="text/css" />
</head>

<body>
ččččččć ššš  žžžžžž

<?php
$con=mysqli_connect("localhost","user","xxx","xxxxx");
// Check connection

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM a_sve ORDER BY kateg");


echo "<table class='myTable'>
<tr>
<th>Kategorija</th>
<th>Model</th>
<th>Opis</th>
<th>Na lageru</th>
<th>Cijena bez PDV-a (Kn)</th>

<th>Detalji</th>
</tr>";


while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['kateg'] . "</td>";
  echo "<td>" . $row['model'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['quantity'] . "</td>";
  echo "<td>" . $row['price'] . "</td>";

 
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>


</body>
</html>

 

 

I dodaj u CSS datoteku, na vrh

@charset "utf-8";

 

15 godina
offline
Re: Utf-8 problem

@nani   podaci u tablicu se spremaju inportom iz xml fajla ali probo sam zamjenit tablicu istom takom rucno napravljenom i ukucanom i ista stvar,  Kako bi bila tocna naredba za ovo set names 'cp1250'?

probo sam ovako  

$result = mysqli_query($con,"SELECT * FROM aaa");
mysqli_set_charset($con,"utf8");

 

 i ovako

 

$result = mysqli_query($con,"SELECT * FROM aaa");
mysqli_set_charset($con,"cp1250");

 

ali nije pomoglo,

takoder sam probo u bazi stavit polje na  cp1250_coratian_ci - opet isto.

Kontam da nije problem u bazi niti u unosu podataka u bazu nego nesto treba dodati u php fajl, jer kada maknem onaj red s charset utf iz <head> a   tablicu normalno vidi hrv znakove?!?

Takoder sam probo s dreamveaverom generirat recordset tj databindings (izlistanje iz mysql baze) i dogada se potpuno ista stvar. Napravim potpuno novu tablicu s 2 polja za probu i u polja stavim čččč - i u pretrazivacu ostanu samo upitnici na mjestima hrv znakova.  U startu sam u dreamveaweru odabro php fajl tako da mi je on gore header postavio ovako:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
</body>
</html>

 

 

tj identicno kako je i moj fajl bio u startu.

 

 

 

 

 

 

15 godina
offline
Re: Utf-8 problem

@sixr 

isprobo i opet isto.

 

14 godina
offline
Utf-8 problem
Query je baš ovakav "set names 'cp1250'", ali to napraviš odmah nakon konekcije, znači prije "select ..." Query-a
Moj PC  
0 0 hvala 0
15 godina
offline
Re: Utf-8 problem

@nani

Thanx rjesio sam ovako: odma nakon konekcije i prije selecta ubaciti

/* change character set to utf8 */
mysqli_set_charset($con, "utf8");

 

I sada radi. Znaci kljucno je da se red ubaci prije selecta.

Hvala svima.

 

$con=mysqli_connect("localhost","user","pass","baza");
// Check connection

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

/* change character set to utf8 */
mysqli_set_charset($con, "utf8");
  
 
  $result = mysqli_query($con,"SELECT * FROM aaa");

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice