Avatar billede downloading Nybegynder
15. november 2010 - 04:56 Der er 10 kommentarer

æøå i MySQL database

Hej.

Jeg sidder og laver et script der læser fra en joomla database. Der bliver læst en masse felter og de bliver så sendt til PostDanmark.

Jeg har fundet ud af at postdanmark godt kan klare at der står æøå i bynavnet eller adressen, men ikke i navnet.

Eller dvs. det er ikke helt rigtigt, for bruger jeg fx:
$name = 'Søren';
er der ingen problemer, men bruger jeg så
$name = $row['name'];
Så virker det ikke hvis der er æøå i navnet..
Feltet i databasen er: varchar(32)      utf8_general_ci

Hvad skal jeg gøre? Er der noget at gøre som ikke går ud på at ændre i databasen?

Mange tak...
Avatar billede danco Nybegynder
15. november 2010 - 06:36 #1
Har du prøvet at logge ind via phpMyAdmin for at se hvordan data ser ud i databasen?
hvis ikke dette er tilfældet så synes jeg du skulle prøve det, hvis ÆØÅ står korrekt her, så findes problemet et andet sted. 

Hvis ÆØÅ ikke står korrekt så kan du bruge at køre denne SQL forespørgsel. Den ændre charsettet på din tabel til dansk. Du skal dog være opmærksom på at den ikke selv ændre hvor der var problemer, så det må gøre manuelt.

ALTER TABLE tableName COLLATE = latin1_danish_ci ;

jeg antager naturligvis at du bruger ISO-8859-1 som charset på det dokument hvor du forsøger at vise data.
Avatar billede downloading Nybegynder
15. november 2010 - 09:46 #2
hmm... Jeg har brugt UTF-8 til mine php filer, er det dumt?

Nu har jeg skiftet fra UTF-8 til ISO-8859-1, men stadig samme problemer..

Det ser fint ud i phpMyAdmin, men der står:

# Server version: 5.0.51a-24+lenny4-log
# Protocol version: 10
# Server: 10.246.16.31 via TCP/IP
# User: pulito_dk@phpmyadmin1.one.com
# MySQL charset: UTF-8 Unicode (utf8)

p.s. jeg bruger dataen til at sende den til postdanmark med SOAP.

MAnge tak.
Avatar billede danco Nybegynder
15. november 2010 - 10:17 #3
UTF-8 understøtter ikke dansk tegnsæt, så derfor vil du ikke kunne få ÆØÅ med.

Hvordan ser den data ud der ligger i databasen, indeholder den ÆØÅ ? ( Dvs når du kører EDIT på din tabel )
Avatar billede downloading Nybegynder
15. november 2010 - 11:10 #4
Jeg forstår bare ikke helt hvordan at der intet problem er når der er æøå i fx. gadenavn,

Hvis jeg skriver echo $name; så får jeg også navnet ud med æøå...

Når jeg trykker edit i databasen er der heller ikke nogle problemer.. Feltet er forresten et varchar(32)..

Hvis jeg i stedet sender informationerne som ?name=$name og så bruger $_POST, så er der intet problem med at lave requestet til PostDanmark.
Avatar billede wanze Nybegynder
15. november 2010 - 14:24 #5
Hvis du er sikker på, at du gør præcis det samme med alle felterne, så må det jo være et problem hos PostDanmark - du kan da prøve at spørge dem eller lede lidt dybere i deres dokumentation? :)
Avatar billede downloading Nybegynder
15. november 2010 - 14:28 #6
Nej for det er jo ikke et problem hos dem. Fejlen kommer i det jeg bruger:
$first_name = $_GET['first_name'];

istedet for
$first_name = 'Søren';

Men skal alt ikke encodes i UTF-8?
Avatar billede downloading Nybegynder
15. november 2010 - 15:19 #7
nu har jeg næsten fået det til at virke..

Alle filer skulle være utf-8, og så har jeg skrevet:

include 'opendb.php';
mysql_set_charset("utf8") or die (mysql_error());

Nu har jeg bare det problem at jeg modtager nogle rigtig grimme tegn ved:

header('Content-Type: application/x-download charset=utf-8');
header('Content-Length: '.strlen($pdf));
header('Content-Disposition: attachment; filename="label-'.$request->parcelLabel->parcels->parcel->refNo.'.pdf"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
echo $pdf;
Avatar billede showsource Seniormester
15. november 2010 - 19:01 #8
danco => utf-8 "æder" da netop alle tegn ?

Lyder som om db er iso, pånær et enkelt felt.
Selvom, hvis alle tegn ser normale ud i alle felter med phpmyadmin, er det næppe gemt som utf-8 fra start.

(phpmyadmin og utf-8 er noget snavs!)

D.v.s. prøv med iso på din php fil, (både som gemt og i meta-tag) og se hvad resultat så er.

En "hurtig" løsning på dit spm. kunne måske være
$name = utf8_decode($row["name"]);
Avatar billede downloading Nybegynder
15. november 2010 - 21:39 #9
okay... Jeg har fået det til at spille ved at bevæge mig mellem 3 sider. En rigtig lappeløsning :) Får lige taget noget backup af den løsning, og prøver så med iso.

Hvordan kan man se hvilket format en db er i?
Avatar billede danco Nybegynder
15. november 2010 - 22:08 #10
Det skulle meget gerne stå hvis du eksporterer dine tabeller til script via PhpMyAdmin, der står det i forbindelse med hver tabel bliver oprettet.
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