Avatar billede esbenp Nybegynder
10. januar 2007 - 01:26 Der er 4 kommentarer og
1 løsning

Tegnsæt i applet

Hej

Jeg har en applet der læser en tekst fil fra serveren ved hjælp af URL.openConnection() metoden. Indholdet af den fil bliver så indsat i GUI. Da filen lå på en apache server var det ingen problemer med æøå. Nu da jeg er gået over til en asp handler der genererer filen er der problemer med øæå. Det ser ud som hvis man sætter firefox til at vise en utf8 fil som ISO-8859-1.

Hvordan kan jeg ordne det
Avatar billede arne_v Ekspert
10. januar 2007 - 01:50 #1
skal du ikke bare sætte det rigtige charset i HTTP response fra den ASP side ?
Avatar billede esbenp Nybegynder
10. januar 2007 - 02:05 #2
måske. Fandt ud af at sætte min InputStreamReader til at bruge UTF-8. Virker fint. Troede egentlig altid java brugte UTF-8, men det er måske internt. Prøvede at ændre
context.Response.ContentEncoding til Unicode. Det fiksede æøå, men alle mellemrum lignede en firkant.
Avatar billede arne_v Ekspert
15. januar 2007 - 02:06 #3
jeg har leget lidt
Avatar billede arne_v Ekspert
15. januar 2007 - 02:06 #4
package january;

import java.io.*;
import java.net.*;

public class WebPageCharSet {
    private static final int DEFAULT = 1;
    private static final int ISOLATIN1 = 2;
    private static final int UTF8 = 3;
    private static final int AUTODETECT = 4;
    private static String get(String urlstr, int cs) {
        StringBuffer sb = new StringBuffer();
        try {
            URL url = new URL(urlstr);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.connect();
            if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream is = con.getInputStream();
                byte[] b = new byte[1000];
                int n;
                while ((n = is.read(b)) >= 0) {
                    switch(cs) {
                    case DEFAULT:
                        sb.append(new String(b, 0, n));
                        break;
                    case ISOLATIN1:
                        sb.append(new String(b, 0, n, "ISO8859-1"));
                        break;
                    case UTF8:
                        sb.append(new String(b, 0, n, "UTF-8"));
                        break;
                    case AUTODETECT:
                        sb.append(new String(b, 0, n, con.getContentType().substring("text/html; Charset=".length())));
                        break;
                    }
                }
                is.close();
            }
            con.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }
    private static void test(boolean isActualUTF8, boolean isLabeledUTF8) {
        System.out.println("Actual: " + (isActualUTF8 ? "UTF-8" : "ISO8859-1"));
        System.out.println("Labeled: " + (isLabeledUTF8 ? "UTF-8" : "ISO8859-1"));
        String urlstr = "http://localhost/" + (isActualUTF8 ? "utf8" : "isolatin1") + ".asp?cs=" + (isLabeledUTF8 ? "utf-8" : "iso8859-1");
        System.out.println("Result (default): " + get(urlstr, DEFAULT).contains("ÆØÅæøå"));
        System.out.println("Result (ISO8859-1): " + get(urlstr, ISOLATIN1).contains("ÆØÅæøå"));
        System.out.println("Result (UTF-8): " + get(urlstr, UTF8).contains("ÆØÅæøå"));
        System.out.println("Result (auto detect): " + get(urlstr, AUTODETECT).contains("ÆØÅæøå"));
    }
    public static void main(String[] args) {
        test(true, true);
        test(true, false);
        test(false, true);
        test(false, false);
    }
}
Avatar billede arne_v Ekspert
15. januar 2007 - 02:06 #5
Actual: UTF-8
Labeled: UTF-8
Result (default): false
Result (ISO8859-1): false
Result (UTF-8): true
Result (auto detect): true
Actual: UTF-8
Labeled: ISO8859-1
Result (default): false
Result (ISO8859-1): false
Result (UTF-8): true
Result (auto detect): false
Actual: ISO8859-1
Labeled: UTF-8
Result (default): true
Result (ISO8859-1): true
Result (UTF-8): false
Result (auto detect): false
Actual: ISO8859-1
Labeled: ISO8859-1
Result (default): true
Result (ISO8859-1): true
Result (UTF-8): false
Result (auto detect): true
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