Avatar billede Kim94 Nybegynder
14. januar 2011 - 22:32 Der er 20 kommentarer

æ, ø og å vil ikke sendes til databasen.

Hej, jeg har et simpelt forum - Når man skal oprette et indlæg eller svare, vil æ ø og å ikke virke. Overskriften kan sagtens sende æ, ø og å til min mysql-database, men teksten kan ikke.

Jeg ved, at fejlen ligger i at sende til databasen, ikke hive informationerne ud, da det i databasen heller ikke viser æ, ø eller å.

Jeg HAR sat siden til utf8 og alt i databasen er også sat til utf8_danish.
Avatar billede olsensweb.dk Ekspert
14. januar 2011 - 22:49 #1
har du prøvet at sætte database char set til utf8
http://php.net/manual/en/function.mysql-set-charset.php
Avatar billede Kim94 Nybegynder
14. januar 2011 - 22:53 #2
Hvordan skal jeg sætte koden ind?
Dette virker ikke:

<?
bool mysql_set_charset ( string $charset [, resource $link_identifier ] )
?>
Avatar billede nissen2630 Novice
14. januar 2011 - 22:54 #3
Efter din connect kan du tilføje disse linier:

mysql_query( "SET NAMES utf8" );
mysql_query( "SET CHARACTER SET utf8");
Avatar billede Kim94 Nybegynder
14. januar 2011 - 22:57 #4
@nissen: Dette gjorde det hele værre - Nu vises intet korrekt.
Avatar billede olsensweb.dk Ekspert
14. januar 2011 - 22:57 #5
#2
<?php
$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);
$db_selected = mysql_select_db('emp_feedback', $link);
if (!$db_selected) { die ('Database access error : ' . mysql_error());}
?>
Avatar billede olsensweb.dk Ekspert
14. januar 2011 - 22:59 #6
Avatar billede nissen2630 Novice
14. januar 2011 - 23:01 #7
så prøv at tilføje i toppen af din fil:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="style.css" type="text/css">

</head>


send evt filen så jeg kan se den
Avatar billede nissen2630 Novice
14. januar 2011 - 23:01 #8
Ups... uden "<link rel="stylesheet" href="style.css" type="text/css">"
Avatar billede Kim94 Nybegynder
14. januar 2011 - 23:02 #9
@ronols: Det giver følgende fejlmeddelelse (og ændrer intet med æ, ø og å):
Warning: mysql_set_charset() expects parameter 2 to be resource, null given in /customers/whataday.org/whataday.org/httpd.www/mulechatten/connect.php on line 8

Min connect-fil ser sådan ud:
<?php
session_start();
//connect.php
$server        = 'localhost';
$username    = '_______';
$password    = '_______';
$database    = '_______';

if(!mysql_connect($server, $username, $password))
{
    exit('Error: could not establish database connection');
}
if(!mysql_select_db($database))
{
    exit('Error: could not select the database');
}

?>
Avatar billede nissen2630 Novice
14. januar 2011 - 23:15 #10
Din connect fejler intet. Det må være i den fil hvor du skriver til basen der er noget galt. Er den gemt som UTF-8
Avatar billede olsensweb.dk Ekspert
14. januar 2011 - 23:30 #11
læg din connection ud i en variabel, det er jo den variabel der skal stå som parameter 2, det skulle fjerne fejlen du får i #9
<?php
session_start();
//connect.php
$server        = 'localhost';
$username    = '_______';
$password    = '_______';
$database    = '_______';
$conn = mysql_connect ($server, $username, $password, true);
if (! $conn )die( 'Could not connect: ' . mysql_error ());
mysql_select_db($database) or die('Could not select database ');
// format der sendes data til db
//mysql_set_charset('latin1',$conn); // iso-8859-1
mysql_set_charset('utf8',$conn);
?>

jeg kan se din side http://whataday.org er sat til 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
, men det har jo kun betydning for hvilke format der visses på siden ikke hvilke format der kommunikeres med databasen
Avatar billede olsensweb.dk Ekspert
14. januar 2011 - 23:55 #12
Avatar billede Kim94 Nybegynder
15. januar 2011 - 00:00 #13
@ronols: Nu kan den kummunikere rigtigt med databasen, så det postes som æøå. Der er dog kommet et nyt problem - Nu vises alt, som kommer fra databasen forkert. :(
Avatar billede nissen2630 Novice
15. januar 2011 - 00:02 #14
Det går aldrig godt når man blander iso-8859-1 og UTF-8 sammen.

Du skal vælge enten det ene eller det andet.
Det mest normale et at bruge UTF-8
Avatar billede Kim94 Nybegynder
15. januar 2011 - 00:05 #15
Jeg har UTF på det hele.
Avatar billede nissen2630 Novice
15. januar 2011 - 00:10 #16
Du har stadig:
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">

I din <head>
Avatar billede Kim94 Nybegynder
15. januar 2011 - 00:15 #17
Nej, det er på min personlige blog. Forummet er et andet sted, hvor det er utf8.
Avatar billede olsensweb.dk Ekspert
15. januar 2011 - 00:27 #18
>Nu vises alt, som kommer fra databasen forkert. :(
det er jo pga siden forvendter iso-8859-1, så der skal du have fat i utf8_decode, og decode output fra din da.

her er det modsatte eks hvor jeg har database i iso-8859-1 format og siden er utf8,
$name = "unknown";
$sql = "select Bynavn from postnr where Postnr = $id and LandeId = 1"; 
$rs = mysql_query($sql, $conn);
if($rs){
    $row = mysql_fetch_assoc($rs);
    $name =  $row['Bynavn'];
}
echo utf8_encode($name);


så det du skal er echo utf8_decode($name);, på de felter du får ud fra databasen :(


#14
>Det går aldrig godt når man blander iso-8859-1 og UTF-8 sammen.
helt enig, side visning og database format bør være ens, ellers er vi ude i noget encode / decode hejls.
Avatar billede olsensweb.dk Ekspert
15. januar 2011 - 00:40 #19
nå du blander side visnings format på dine sider
>Nej, det er på min personlige blog. Forummet er et andet sted, hvor det er utf8.
http://whataday.org/mulechatten/
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
Avatar billede andreas134 Nybegynder
15. januar 2011 - 01:32 #20
Som jeg har forstået det (ret mig hvis det er forkert) så skal mysql_set_charset() stå mellem mysql_connect() og mysql_select_db()
da den definerer hvilket charset man modtager dataene i.

Og hvis mysql_set_charset() definerer efter at dataene er hentet så er det jo ligesom "for sent" :)

Jeg synes det kunne være interessant at vide hvad mysql_client_encoding() returnerer.
http://php.net/manual/en/function.mysql-client-encoding.php

MySql sender som standard data i latin1 (aka. iso-8859-1).

Så hvis mysql_client_encoding() ikke returnerer: uft-8 så prøv at flytte mysql_set_charset() så den står mellem mysql_connect() og mysql_select_db()
Jeg har selv siddet i en lignende situation engang før, hvor det var "fejlen".
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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