mboost-dp1

ÆØÅ fucker op?


Gå til bund
Gravatar #1 - PHP-Ekspert Thoroughbreed
1. mar. 2017 10:21
Mojn!

Jeg fatter simpelthen nur bahnhof.

Hvis jeg under følgende skriver ÆØÅ er der intet problem:
'label' => 'Ææ Øø Åå',

Den viser det som den skal. Men, det data scriptet henter fucker fuldstændig rundt i det, og viser i stedet UTF-charset (Altså =C3=86 i stedet for Æ)

--

Det der undrer mig, er at det er samme PHP som bruger 'label' som trækker data ud.
Hvordan fortæller jeg den at det data der bliver læst er UTF-8?

Hilfe!
Gravatar #2 - _tweak
1. mar. 2017 13:04
Det formentlig fordi din php fil er gemt i UTF-8, derfor er det der outputtes også UTF-8. Hvis din data er gemt som UTF-8 men hentes ind som (feks) ISO8859-1 så vil den stadig outputte den på UTF-8's præmiser, og derfor vise tegnene hver for sig. Tegnsæt bliver hurtig noget trial and error :)

Hvordan læser du dataen ind? Det kan være du skal mb_detect_encoding på den evt.
Gravatar #3 - arne_v
1. mar. 2017 17:59
Tricket med tegnsæt er at være konsistent.

Hvis din server / side fortæller browseren at tegnsæt er X, så skal:
* PHP filerne være gemt i X
* database connection bruge X (det er derimod ikke nødvendigvis påkrævet at data i databasen bruger X, men det gør tingene lidt nemmere)

Din beskrivelse lyder som om:
- browser tror sideerne er ISO-8859-1
- PHP filerne er gemt som ISO-8859-1
- database connection bruger UTF-8
Gravatar #4 - PHP-Ekspert Thoroughbreed
1. mar. 2017 20:29
#2 #3

Den henter data fra en IMAP-server, kan det være mailen der sender en fucked up header?
Gravatar #5 - _tweak
1. mar. 2017 20:30
arne_v (3) skrev:
PHP filerne er gemt som ISO-8859-1

Jeg tænker, at i så fald ville hans streng (hvor æøå står i koden) ikke outputte som æøå, medmindre browseren tror (eller ved) at dokumentet heller ikke er ISO8859-1 - hvilket faktisk kan være, ja, præcis det denne fejl giver. Så helt rigtig.

Tegnsæt er bare lykken....
Gravatar #6 - PHP-Ekspert Thoroughbreed
1. mar. 2017 20:30
Har prøvet både UTF-8 og ISO-8859-1 Ansi
Lige lidt hjælper det. Hvis jeg laver en echo/print virker det fint nok, men den data den henter fra IMAP skriver =C3=86 -.-

--

Kan lige smide kode ind i morgen formiddag. Virker code-tagget?
Gravatar #7 - _tweak
1. mar. 2017 20:32
Jeg indrømmer jeg ikke husker det - men pastebin.com er lækkert :)
Gravatar #8 - arne_v
2. mar. 2017 20:37
Hmmm.

Jeg får lige en tanke når det er email og ikke database.

Måske henter du rå quoted printable.

Hvis du nu har:

$data = en_eller_anden_funktion_som_henter_email();
echo $data;

kan du saa prøve:

$data = en_eller_anden_funktion_som_henter_email();
echo quoted_printable_decode($data);
Gravatar #9 - PHP-Ekspert Thoroughbreed
2. mar. 2017 21:03
#8

Det skal helt klart prøves. Fik ikke lige tid i dag, men ser på det her i løbet af weekenden.

Takker.
Gravatar #10 - _tweak
3. mar. 2017 10:22
"=C3=86" ligner i hvert fald klassisk mail-encoding stuff :-)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login