Avatar billede lsolesen Nybegynder
25. januar 2004 - 01:46 Der er 15 kommentarer og
1 løsning

Gemmer forkert encoding

Når jeg tester min wap-applikation i Opera er der ingen problemer, men når jeg gemmer data fra min mobiltelefon, hvor der er æøå i, så gemmes det ikke rigtigt. Jeg bruger følgende header:

<?php
header('Content-Type: text/vnd.wap.wml; charset: iso-8859-1', true);
// no cache
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false); // HTTP 1.1
header("Pragma: no-cache"); // HTTP1.0
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
?>
Avatar billede janegil Nybegynder
25. januar 2004 - 14:00 #1
Så må vi enten få lest hav HTTP headeren fra WAP-gatewayen sier om hva encoding den bruker, eller prøve å gjette det, ut fra hva som blir gjemt.

Du sier æøå blir "ikke rigtigt", kan du være mere konkret?
Avatar billede lsolesen Nybegynder
25. januar 2004 - 14:54 #2
De bliver til underlige tegn - ligner lidt hvis man tror man gemmer med utf-8, men det i virkeligheden er iso-standard. Hvis det siger dig noget :o) eller mig noget :)
Avatar billede lsolesen Nybegynder
27. januar 2004 - 08:48 #3
Hm, det er mærkeligt. Nu har jeg sat encoding serverside, jeg har sat den i xml-tagget, og endelig har jeg sat den på go-tagget med accept-charset, men den sender stadig brugerinputtet som var det utf-8, og jeg har jo skrevet iso-8859-1
Avatar billede janegil Nybegynder
27. januar 2004 - 10:19 #4
Vi vet ennå ikke om prblemet er i en bestemt telefonmodell, i den WAP gateway du bruker, eller i din server/din programmering.

Hvilken telefon bruker du? Hva er IP til din operatørs WAP-gateway? Har du prøvd andre PC-baserte simulatorer enn Opera? Nokias eller Openwaves?

Hvis du legger ut URL til en WML-side som logger input, og en HTML-side som viser hva som ble logget, så kanskje noen av oss gidder å teste? Hvis du gjør, vílle det være nyttig å logge hele HTTP-headeren som din server mottar fra gatewayen.
Avatar billede lsolesen Nybegynder
27. januar 2004 - 10:30 #5
Det virker fint i Opera. Jeg bruger en Siemens C60 med Orange som gateway - kan ikke lige finde deres ip. Du kan se applikationen på www.larsolesen.dk/wap.php. Det gælder når man gemmer fra telefonen i enten kalenderen eller i adressebogen. Du er velkommen til at lave nogle poster. Jeg bruger Openwave browser på telefonen.
Avatar billede janegil Nybegynder
27. januar 2004 - 16:29 #6
test-post. (tidligere poster i dag feilet)
Avatar billede janegil Nybegynder
27. januar 2004 - 16:31 #7
OK. Koden er valid. Likevel ser jeg en "Afsted" i http://www.larsolesen.dk/adressebog/calender.php#create med Opera, men ikke med Nokia simulator, og ikke med en virkelig Nokia 3410.

Så her er flere mysterier enn tegnsettet.
Avatar billede janegil Nybegynder
27. januar 2004 - 16:40 #8
<go href="" method="post" accept-charset="ISO-8859-1">

Er det OK at href er tom? Det er jo ikke OK å skrive
<go method="post" accept-charset="ISO-8859-1">
Avatar billede lsolesen Nybegynder
27. januar 2004 - 16:54 #9
Nu er href ikke tom længere, men den laver stadig ikke det rigtige charset. I øvrigt har Afsted knappen hele tiden været synlig på min Siemens C60.

Hm, det er da mærkeligt :(
Avatar billede janegil Nybegynder
28. januar 2004 - 09:25 #10
Prøv om du kan få serveren din til å akseptere UTF-8 ?
Avatar billede janegil Nybegynder
28. januar 2004 - 09:28 #11
Testet akkurat Nokia 3410. Slapp inn på http://www.larsolesen.dk/wap.php, men "intet svar" fra "Kalender".
Avatar billede lsolesen Nybegynder
28. januar 2004 - 09:36 #12
09:25:13 > Jeg kan ikke få serven til at acceptere UTF-8!
09:28:03 > Der er ingen problemer her?
Avatar billede janegil Nybegynder
28. januar 2004 - 09:48 #13
Det kan se ut som om serveren din har fått, men bare delvis akseptert, UTF-8.

Hvis jeg viser http://www.larsolesen.dk/adressebog/calender.php#calender i Opera med UTF-8, så er da noen Æ'er og Ø'er rett.

Prøv å endre til accept-charset="UTF-8", og se om ikke det går pent inn i serveren? Så skal encoding også endres til UTF-8 i calender.php for å fortelle user agent hvordan output fra databasen skal tolkes.

Et problem: Du kan så ikke skrive non-ASCII i den hardkoda delen av siden, du må evt bruke heksadesimale character entities for æøå som ikke kommer fra via databasen.
Avatar billede lsolesen Nybegynder
11. februar 2004 - 10:01 #14
Jeg har lavet en wap-side, som giver nogle informationer om min gateway.

http://www.larsolesen.dk/adressebog/wapinfo.php

Gateway'en accepterer iso-8859-1, men den accepterer stadig ikke indtastede æøå, når jeg gør det fra telefonen. Der er fortsat ingen problemer, når jeg gør det fra Opera. Det er derfor, at nogen æ og ø er rigtige.

Ang. Et problem: Ingen non-Ascii i hardcode. Hvad mener du helt nøjagtigt?
Avatar billede janegil Nybegynder
11. februar 2004 - 12:30 #15
"Ingen non-Ascii i hardcode".

For meg ser det ut som om databasen din opererer med UTF-8.
Derfor skal du angi <?xml version="1.0" encoding="utf-8"?> i din output fra PHP.

Men når du så gjør, skal selve .php-fila også kodes som UTF-8, det krever en editor som han håndtere denslags. Jeg anbefaler XMLspy, men den er bare gratis i 30 dager.

Hvis du angir at encoding er utf-8, men fortatt skriver "Søg aftale" med iso-8859-1, vil siden ikke lenger være velformet XML. (Det er 'ø' i "Søg aftale" jeg sikter til når jeg skriver "non-Ascii i hardcode".)
Avatar billede lsolesen Nybegynder
24. marts 2004 - 10:43 #16
Min wapudbyder kan kun sende utf-8. Løsningen blev at encode det serverside med php, som netop har en funktion til at håndtere utf-8.
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