Avatar billede trp79 Nybegynder
04. november 2005 - 09:06 Der er 9 kommentarer og
1 løsning

Urlencodinng af specialtegn som fx ®

Hejsa
Jeg har en form på side B, hvor der ved submit sendes specialtegn med som fx ® til siden A. I A's url vil der derfor står dette "%AE" istedet for ®. Men jeg har brug for på siden A at tolke dette special tegn som "®".

Så mit spørgsmål er hvordan jeg på siden A tolker specialtegn som "%AE", så de korrekt bliver oversat til deres tilsvarende ascii værdi.

På forhånd tak, mvh
Torben
Avatar billede arne_v Ekspert
04. november 2005 - 09:21 #1
til og fra %XX er indbygget i Java:

java.net.URLEncoder
java.net.URLDEcoder

til og fra &xxx; skal du så vidt jeg ved have fat i noget ekstra - Google finder:
  http://www.purpletech.com/code/src/com/purpletech/util/Utils.java
  (htmlescape og htmlunescape)
Avatar billede trp79 Nybegynder
04. november 2005 - 10:14 #2
Jeg er helt blank på det her område, så jeg har lige et par spørgsmål mere.
1)
Hvad hedden denne form for encoding "%AE" ?

2)
Jeg kan se at URLDecode(String s) er deprecated, så jeg skal sendes en encoding type med også - vil jeg der bare skulle bruge UTF-8 ?

3)
Jeg kan se at htmlescape i dit link encoder til &XXX, så det er jo lige hvad jeg har brug for :)

Så det jeg skal gøre på side A må være:
String stringToAscii = java.net.URLDecoder.decode(request.getParamter("nonAsciivalue"), "UTF-8");

stringToAscii = com.purpletech.util.Utils.htmlescape(stringToAscii);
Det er vel ikke helt hen i vejret? :)
Avatar billede arne_v Ekspert
04. november 2005 - 10:39 #3
re 1)

URL encoding

re 2)

UTF-8 eller ISO-8859-1 eller noget mere eksotisk

re 3)

det ser umiddelbart fornuftigt ud

kode teknisk

så vidt jeg ved plejer man kun enten at URLencode eller at HTMLEncode
Avatar billede trp79 Nybegynder
04. november 2005 - 15:06 #4
hmm, det driller godt nok.

Med denne kode:
        String a1 = java.net.URLDecoder.decode("%AE");
        String b1 = java.net.URLEncoder.encode(a1);
        String c1 = Utils.htmlescape(a1);
        System.out.println(a1);
        System.out.println(b1);
        System.out.println(c1);

får jeg:
«
%AE
®

Det er ikke den nyeste jvm der benyttes, så jeg har ikke mulighed for at sende enc-type med til URLencoder og URLdecoder.

Har du nogen ide om, hvordan jeg kan få det løst?
Avatar billede arne_v Ekspert
04. november 2005 - 15:15 #5
Hvad siger:

System.out.println((int)a1.charAt(0));

?
Avatar billede trp79 Nybegynder
04. november 2005 - 15:51 #6
hov, den siger faktisk 174 :)
men det er vel procenttegnet? og i windows tegntabel der er alt+0174=®
Avatar billede arne_v Ekspert
04. november 2005 - 18:38 #7
AE er også 174

så ® er OK

men hvrofor udskrives den decode som den gør ??
Avatar billede trp79 Nybegynder
05. november 2005 - 13:09 #8
Ja det er et godt spørgsmål.
Jeg er først på arbejde igen tirsdag, så der kigger jeg lidt mere på det.
Avatar billede trp79 Nybegynder
08. november 2005 - 13:31 #9
Tja, vi har henlagt problematikken og indtil videre sender vi acsii koden med istedet for tegnet ®. Når man gør det encodes url'en så det bliver muligt at lave en sammenligning mellem de to strings.

Tak for hjælpen arne. Hvis du smider et svar, så er der point for forsøget og forklaringerne.
Avatar billede arne_v Ekspert
08. november 2005 - 13:34 #10
ok
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
Kurser inden for grundlæggende programmering

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