Avatar billede net-base.dk Nybegynder
10. november 2006 - 15:30 Der er 22 kommentarer og
1 løsning

forkerte bokstaver æ og ø og å MySQL udtræk

Hej.

Jeg sidder og har et problem med sit site, når jeg skriver æøåÆØÅ almindelig i HTML vises det rigtigt på siden og når jeg printer det gennem PHP kommer det også rigtigt ud.

Mit problemer er at når jeg henter et tekst med æøåÆØÅ i fra MySQL så kommer der noget helt andet ud af det... f.eks "Kalender Måned" bliver til "Kalender MÃ¥ned".

Hvordan kan det være? Hvad mangler jeg at sætte på i min MySQL.

Skal lige siges at sitet hostes på en Gentoo(linux) webserver jeg selv har sat op.

Ja undskyld den lidt onsvage overskrive men kunne ikke skrive "ÆØÅ forkerte ved MySQL udtræk" eksperten siger til det ""æøå" er ikke med til at beskrive dit problem, så formuler venligst en bedre titel."
Avatar billede net-base.dk Nybegynder
10. november 2006 - 15:42 #1
Problemet kan ses på http://demo.gertz.lir.dk
Avatar billede j-johansen Nybegynder
10. november 2006 - 17:50 #2
Er måske en fusket løsning (og er ikke helt sikker på det vil virke), men prøv utf8_decode($text)
Avatar billede j-johansen Nybegynder
10. november 2006 - 17:52 #3
(En mere 'rigtig' løsning ville nok være (tror i hvert fald det er her problemet er) at lave databasen med en mere ønskværdig 'Kollation (Collation)', f.eks. kører jeg latin1_general_ci, og det virker fint :))
Avatar billede tdafoobar Nybegynder
10. november 2006 - 17:59 #4
En mere rigtig løsning ville være at bruge samme charset i din HTML som i din database.
Bare brug UTF-8 til alting, så slipper du for problemer.

I dit tilfælde har du dog ikke engang en charset decleration, hvad med at lære HTML før du fortsætter ? fordi din nuværende kode er da ekstrem elendig.

og her er hvad du skal bruge:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

:)
Avatar billede net-base.dk Nybegynder
10. november 2006 - 18:13 #5
j-johansen -> Jeg har prøvet at sætte min database til noget andet uden resultat...

tdafoobar -> Kan godt være at min HTML kode ikke er den kønneste lige nu, men siden er langt fra færdig, og det er ikke nødvendigt at have <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> Den gør bare at browseren ved hvad charset den skal bruges, men det kan sådan set også sættes i apache configurationen så kommer det med i headeren på siden, hvilket er hvad jeg har gjort så LUK røven inden du begynder at spille smart. Fjols.
Avatar billede tdafoobar Nybegynder
10. november 2006 - 18:30 #6
o'rly ?

Jamen hvorfor spurte du så , når du allerede kendte løsningen ? :)

Luk selv numsen inden du forsøger at spille barnlig, newbie.
Avatar billede coderdk Praktikant
10. november 2006 - 21:33 #7
tdafoobar har jo ret. Jo, det *ER* nødvendigt at angive content-typen, som du jo har opdaget. Og nej, du har IKKE sat apache op til at sende en content-type med utf-8. Dette er hvad din server sender:

Response Headers - http://demo.gertz.lir.dk/

Date: Fri, 10 Nov 2006 20:31:48 GMT
Server: Apache
X-Powered-By: PHP/5.1.6-pl4-gentoo
Content-Length: 1758
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

200 OK
Avatar billede coderdk Praktikant
10. november 2006 - 21:35 #8
Desuden får du ikke noget ud af at svine folk til, der vil hjælpe dig. Hvad er du 14 år?
Avatar billede net-base.dk Nybegynder
10. november 2006 - 23:25 #9
OKay, jeg har nu tilføjet "AddDefaultCharset URF-8" til min httpd.conf i apache og <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> Nu kan den så også fint skrive æøåÆØÅ fra MySQL men når jeg skriver det gennem normal html og PHP så kommer der bare ??????

Sorry jeg svinede dig til tdafoobar, havde læst på et andet site at det ikke var nødvendig at have begge sat.

Men er der nogle som kan svare på hvorfor den ikke kan skrive æøåÆØÅ på alm vis?
Avatar billede coderdk Praktikant
11. november 2006 - 00:26 #10
Det er fordi at de æøå der bliver vist som ??? ikke er i UTF-8, men ISO-8859-1. Prøv at se om der i din editor er mulighed for at skifte format. psPad har f.eks. en "Format"-menu hvor du kan tvinge et charset til din fil :)
Avatar billede net-base.dk Nybegynder
11. november 2006 - 00:34 #11
Har lige prøvet at afvikle sitet på min laptop og der virker det fint den kan skrive alt det den skal de rigtige steder. og det er uden <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> og AddDefaultCharset ISO-8859-1 i httpd.conf

coderdk -> Nej jeg kan ikke lige se hvordan jeg skal kunne sætte andre på hvad font encoding den skal bruge koder i Zend 3.5.2 Jeg har også prøvet at skrive æøåÆØÅ ind via min putty connection til linux og det giver samme resultat.
Avatar billede coderdk Praktikant
11. november 2006 - 01:04 #12
Hmmm 3.5.2 er også halvgammel, har du kigget præferencerne igennem, der burde være et sted hvor du kan angive hvilket charset der skal benyttes når den gemmer filerne...
Du får samme resultat via ssh/putty fordi serveren sikkert er sat til iso8859-1 eller latin1, så den gemmer i samme format som din zend.
I [nyere] vi(m) under linux kan du skrive :set encoding=utf8 efterfulgt af :set termencoding=iso8859-1 - så kan du skrive æøå osv. og når du gemmer er formatet i utf8...
Avatar billede net-base.dk Nybegynder
11. november 2006 - 01:15 #13
Sådan fandt ud af hvordan man ændrede den save metode, nu kan den finde ud af det...

Men hvordan kan det være at jeg skal til at sidde og rode så meget med charset når jeg før har haft en linux box som godt kunne finde ud af det, og det virker jo også fint på min apache installation på windows...
Avatar billede coderdk Praktikant
11. november 2006 - 16:58 #14
Du har sikkert kun kørt ren ISO-8859-1 før, det er helt normalt :)
Avatar billede net-base.dk Nybegynder
12. november 2006 - 13:21 #15
Okay, Kan jeg ikke sætte min server op til det igen? og hvordan klares det?
Avatar billede coderdk Praktikant
12. november 2006 - 15:32 #16
Du skal sætte din apache op til ISO-8859-1 igen, og smide charset=iso8859-1 i din HTML-header også. Derefter skal du oprette en ny database som bruger iso-8859-1 i stedet for utf-8, så burde det virke ;) Du kan også beholde din utf-8-database og bruge utf8_decode() på dit output... Jeg ville nu bare beholde utf-8 når du nu har fundet ud af det :)
Avatar billede net-base.dk Nybegynder
12. november 2006 - 15:36 #17
OKay det vil jeg lige kigge på. tak, smid svar...
Avatar billede coderdk Praktikant
12. november 2006 - 15:40 #18
j-johansen, gav fatisk et godt svar i toppen omkring collation. og tdafoobar gav løsningen til dit oprindelige problem... Jeg har bare uddybet og forklaret :) Jeg vil godt dele med dem, hvis de vil have point :)
Avatar billede tdafoobar Nybegynder
12. november 2006 - 18:19 #19
nah , ikke noget til mig :p Han sagde i det mindste undskyld.
Avatar billede net-base.dk Nybegynder
12. november 2006 - 19:24 #20
Jeg har lige et sidste spg, håber i vil være mig behjælpelig med det, opretter gerne et spg mere hvor i kan svare i.

Jeg har nu lavet min apache om til at køre med ISO-8859-1 og headeren i mit HTML dokument er også ændret. Jeg så også lavet en ny Database som ser sådan her ud, men aligevel så kommer tegnene forkert ud...

-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Nov 12, 2006 at 07:21 PM
-- Server version: 4.1.21
-- PHP Version: 5.1.6-pl4-gentoo
--
-- Database: `01_demo`
--
CREATE DATABASE `01_demo` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs;
USE 01_demo;

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

--
-- Table structure for table `menu`
--

CREATE TABLE `menu` (
  `id` int(4) unsigned NOT NULL auto_increment,
  `pid` int(4) unsigned NOT NULL default '0',
  `name` char(64) collate latin1_general_cs default NULL,
  `link` char(64) collate latin1_general_cs default NULL,
  `title` char(64) collate latin1_general_cs default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=3 ;

--
-- Dumping data for table `menu`
--

INSERT INTO `menu` VALUES (1, 0, 'Menu 1 æøåÆØÅ', NULL, NULL);
INSERT INTO `menu` VALUES (2, 0, 'menu 2 æøåæøå', NULL, NULL);


Kan i svare på hvorfor det stadig ser mystisk ud?
Avatar billede coderdk Praktikant
12. november 2006 - 21:49 #21
Hmm? Det script, er formatet skrevet i UTF-8 eller ISO-8859-1 ;) Hvis det er skrevet i UTF-8 kommer der underlige tegn ind i tabellen ;)
Avatar billede coderdk Praktikant
12. november 2006 - 21:50 #22
Hvis det er i en browser så se hvad Page | Encoding er (IE7) eller View | Character Encoding (FF)
Avatar billede net-base.dk Nybegynder
13. november 2006 - 15:52 #23
Siden er lavet i UTF8 men har sat apache til ISO-8859-1 og det er <head> i html også sat til. Men syntes bare det er mystisk at det kommer sådan ud... Har før haft en Linux box hvor det kørte fint på...
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