Avatar billede siphon Nybegynder
04. januar 2012 - 09:18 Der er 14 kommentarer

Meget mærkelig charset problem.

Jeg har et meget meget mærkeligt problem,

Prøv at se på følgende link www.giroindenmark.com/signup_system/lookup som i kan se viser den æøå nogen steder og ikke andre.

Hvad jeg har forsøgt at gøre

1) at skifter charset i meta tag ( byttede rundt på hvilke ord der bliver vist æøå og hvilke der ikke gøre ).

2) 1.000 x tjekket at filen er UTF-8 encoded.

3) Tjekket at min webserver tillader både ISO-8859-1 og UTF-8

4) Sat et hav af forskellige Collations i min mysql database.

5) Forsøgt mig med alle mulige former for php encoding/decoding.

6) Forsøgt mig med sjove php headers.

Baggrund i opgave.

Alle data listet kommer fra samme kilde (En input formular der gemmer op i en database) - den eneste ting der afviger er at data'en er indtaste fra mange forskellige lande.

Der er en mysqli_real_escape_string på data'en inden det bliver lagt op i databasen, ellers er der ingen form for handling på data'en.

Nogen der har en ide om hvad der går galt ?
Avatar billede cpfrande Nybegynder
04. januar 2012 - 09:44 #1
Har du prøvet at lave en utf8_encode() rundt om de data du udskriver? Hjælper det evt.?

Umiddelbart ser ikke alle data ud til at være i UTF8-format. Hvordan ser dataene ud i MySQL-databasen? Er de også "sjove" der?
Avatar billede cyberspace Nybegynder
04. januar 2012 - 10:05 #2
hos mig kan siden ikke indlæses :( blot til info
Avatar billede siphon Nybegynder
04. januar 2012 - 10:06 #3
#1 Ja har prøvet det. Jeg syntes nemlig også at det ser ud som om at noget af data kommer fra en 3. kilde eftersom det ikke er UTF-8.

Det sjove er nu at når jeg åbner databasen så er alle de strings der vises korrekte på siden med mærkelige tegn (ikke spørgsmålstegn, men arabiske eller hvad de hedder.) og dem der vises som spørgsmålstegn vises som æøå ü ë osv.

Jeg er vildt forvirret - har ALDRIG oplevet charset problemer af denne karakter før.
Avatar billede siphon Nybegynder
04. januar 2012 - 10:09 #4
#2 Nej, vores udbyder har lige ringet og fortalt de har nedbrud.. så der går nok 30 min før vores server er oppe igen.
Avatar billede siphon Nybegynder
04. januar 2012 - 10:09 #5
UPS - det skulle ikke være et svar :P
Avatar billede webweaver Praktikant
04. januar 2012 - 10:43 #6
Er alt også i UTF-8 på den side, hvor formularen er og data bliver smidt i databasen?

Og serveren sender i UTF-8 format?

Det virker bare til, at du ikke får encoded det som UTF-8 hele vejen igennem. Evt. for det "dobbelt encoded". Men hvor filmen knækker, er lidt svært at spå om.
Avatar billede siphon Nybegynder
04. januar 2012 - 11:04 #7
#6 Jeg forstår din point og er helt overbevist om at det er der fejlen må ligge, er også igang med at lege sherlock holmes på mine filer.

MEN er der en metode at tage det jeg har nu kører det i gennem en "kværn" og få det hele lavet om til UTF-8 og derefter gemme det i db igen?

Så jeg kan "redde" alle de posts der er fejl i ?
Avatar billede siphon Nybegynder
04. januar 2012 - 13:41 #8
Okay, jeg har fundet en workaround, absolut ikke optimal eller vedvarende.

Hvis jeg ændrede charset'et på siden til "ISO-8859-1" og tilføjede en php header der ligeledes lavede det om til ISO-8859-1 virkede det hele.

Sagen er den at jeg skal først tilføje den header EFTER jeg har lavet mine database udtræk får at det virker.

Jeg ved ikke hvad det er for noget bøvleri, men det virker som et plaster til jeg finder den rigtige årsag til mine problemer.

Ellers mange tak for hjælpen hvis i alle smider et svar skal i alle få points ^^
Avatar billede cpfrande Nybegynder
04. januar 2012 - 14:46 #9
Jeg behøver ingen svar, da jeg ikke indgik i "løsningen" ;-)
Avatar billede siphon Nybegynder
04. januar 2012 - 15:12 #10
#9 Arghh pjat med dig, jeg gir sku en omgang !
Avatar billede olebole Juniormester
04. januar 2012 - 16:24 #11
<ole>

Det er ikke et plaster, men et stykke brugt toiletpapir, du lægger på såret! Det er ikke en løsning - det 'inficierer' blot applikationen endnu mere.

Årsagen til det oprindelige problem er, at din database ikke indeholder data i det format, du troede (utf-8). Hvis du venter med at løse problemet, vil din database bare blive fyldt med endnu mere ANSI-formaterede data, som du så skal bruge endnu mere tid på at få gjort tidssvarende.

/mvh
</bole>
Avatar billede siphon Nybegynder
05. januar 2012 - 08:08 #12
#11 Er opmærksom på elendigheden i løsningen. Har også fundet "fejlen". Nu skal jeg så bare sidde og rette samtlige data felter manuelt :(.
Avatar billede webweaver Praktikant
05. januar 2012 - 15:27 #13
Indholdet i alle felterne eller selve felterne?

Der kunne vel evt. laves noget, der parser data igennem og smider det ind som true UTF-8 på ny. Hvis der er mange data, kan det jo være mindre sjovt at rette til manuelt.
Avatar billede olebole Juniormester
05. januar 2012 - 16:00 #14
Jeg vil mene, at MySQL kan klare det 'internt'. Træk en kopi af databasen og prøv at køre denne kommando for hvert felt/kolonne:


$sql = 'UPDATE `TABEL_NAVN` SET `FELT_NAVN`=CONVERT(CONVERT(`FELT_NAVN` USING binary) USING utf8)';
mysql_query($sql) or die (mysql_error());


Jeg er meget sikker på, det vil virke - men 'meget' er ikke '100%', og jeg har ikke testet. Derfor må du kun prøve på en kopi af databasen  *o)
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