Avatar billede doncarnage Nybegynder
06. februar 2009 - 13:21 Der er 10 kommentarer og
1 løsning

Tegnsæt viser ikke æ,ø,å?

God eftermiddag..

Jeg sidder i den situation at mit tegnsæt driller rigtig meget på en ny side som jeg roder med. Kort og godt vil den ikke vise æ,ø,å når jeg trækker ud fra databasen - de bliver i stedet erstattet af en firkant.

Det gør sig tilsyneladende kun gældende når jeg trækker noget ud fra den tilhørende database, for hvis jeg blot skriver ren æ,ø,å i html koden virker det fint nok. Men hvad gør jeg galt? På en anden side, som jeg har lavet, virker det fint hos mig med tegnsættet og siderne er stort set identiske, men kan ikke slet ikke spotte fejlen. Eneste ændring er at jeg har lavet min nuværende i Dreamweaver for en gangs skyld. Jeg har prøvet at ændre kollation og tegnsættet til siden, men desværre uden held...

--------------------------------

Kollation til tabellen (mysql) = latin1_general_ci

--------------------------------

Det relevante fra siden ser ud som følgende:


<!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>Guitartabs</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="content">
<div id="text">

<?php
include_once('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM forside") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {

    echo $row['text'];
}
?>
     
</div>
</div>
</body>
</html>

--------------------------------

Håber i kan hjælpe :/
Avatar billede psychopixi Nybegynder
06. februar 2009 - 13:33 #1
Prøv at se om det hjælper at skifte charset:
<!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="application/xhtml+xml; charset=iso-8859-15" />
<title>Guitartabs</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="content">
<div id="text">

<?php
include_once('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM forside") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {

    echo utf8_encode($row['text']);
}
?>
   
</div>
</div>
</body>
</html>




Alternativt kan du prøve:
<!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>Guitartabs</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="content">
<div id="text">

<?php
include_once('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM forside") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {

    echo utf8_encode($row['text']);
}
?>
   
</div>
</div>
</body>
</html>
Avatar billede psychopixi Nybegynder
06. februar 2009 - 13:35 #2
Hov .. det øverste eksempel skal ændres fra:
echo utf8_encode($row['text']);

til:
echo $row['text'];
Avatar billede doncarnage Nybegynder
06. februar 2009 - 18:04 #3
Det alternative forsøg virkede efter hensigten ;)

Smid et svar og du skal få points
Avatar billede kjeldsted Novice
06. februar 2009 - 18:04 #4
Det kunne også være interessant at vide om du bruge utf-8 eller iso-8859-1 (eller noget helt tredje) dér hvor du gemmer teksten i databasen.

Det er meget vigtigt at benytte samme charset på samtlige sider hvis ikke du vil have problemer.
Avatar billede psychopixi Nybegynder
06. februar 2009 - 18:07 #5
Ok:)

Forklaringen er at utf8_encode funktionen tager en iso-8859-1 streng of formatterer med utf8.
Avatar billede olebole Juniormester
06. februar 2009 - 18:15 #6
<ole>

At bruge utf8_encode og utf8_decode svarer til at trampe på termometret. Patienten er stadig dødsyg, selvom du ikke kan aflæse hans temperatur  ;o)

Du skal sørge for, at det, du fylder i databasen, er utf-8 indhold.

Dernæst skal dine DB-collationer stå til utf-8.

Dine dokumenter skal indeholde en utf-8 Content-Type meta.

Dine dokumenter skal være gemt som utf-8.

Din server skal sende dine dokumenter som utf-8.

Så får du næppe problemer med tegnsæt  =)

/mvh
</bole>
Avatar billede doncarnage Nybegynder
07. februar 2009 - 17:47 #7
Jeg forstår bare ikke hvorfor den skal formateres når det burde være utf-8 fra start af.. men det virker, så skidt pyt :)

Til kjeldsted:
Jeg har blot skrevet noget tekst ind i en tabel i phpmyadmin, så ved ikke lige hvilken format den bruger derinde...
Avatar billede olebole Juniormester
07. februar 2009 - 18:18 #8
"men det virker, så skidt pyt" >> den tankegang kan kun udsætte dine problemer - ikke løse dem.

Man kan ikke skrive websider, hvis man ikke har 100% styr på, hvilket tegnsæt man bruger i alle led - samt hvilket format man stopper ind i sin database.

Ikke at have styr på de ting svarer til en kok med bind for øjnene, som tilmed ikke aner, hvad køleskabet indeholder  ;o)
Avatar billede doncarnage Nybegynder
07. februar 2009 - 19:59 #9
Det har du fuldstændig ret i, men du kunne heller ikke forklare det kunne du :) ?

Jeg har jo på forhånd defineret mit tegnsæt i headderen med:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Så hvorfor jeg skal formatere igen med "utf8_encode" når jeg udtrækker fra databasen er mig lidt en gåde eftersom det virkede fint nok på andre sider jeg har lavet :S
Avatar billede olebole Juniormester
07. februar 2009 - 22:26 #10
Du må vist have overset min kommentar: http://www.eksperten.dk/spm/862755#reply_7320151
Avatar billede doncarnage Nybegynder
08. februar 2009 - 10:47 #11
Oh ja.. Det var vidst en svupser ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester