Avatar billede milla Nybegynder
15. maj 2003 - 08:52 Der er 31 kommentarer og
1 løsning

Specielle tegn

Jeg har en ny-installeret linux-server (Redhat 8.0) kørende med Resin 2.1.8 og java 1.3.1_8.
Når jeg via http hitter en jsp-side bliver alle danske tegn oversat til noget snask.

Følgende meta ligger i jsp-siden :
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

I resin.conf har jeg smidt følgende:
<web-app character-encoding='ISO_8859-9'></web-app>


Er der nogen der har nogle gode ideer eller en løsning?
Jeg har søgt lidt rundt omkring på nettet og fundet nogle der havde tilsvarende problemer, bare med franske tegn

http://forum.java.sun.com/thread.jsp?thread=315993&forum=16&message=1411712

De anbefaler følgende komando:
java -Dfile.encoding=ISO-8859-1 ....

Men hvordan i alverden får jeg resin til det?
Avatar billede soreno Praktikant
15. maj 2003 - 09:04 #1
Måske dette vil hjælpe:
System.setProperty("file.encoding", "ISO-8859-1");

?
Avatar billede arne_v Ekspert
15. maj 2003 - 09:26 #2
-Dfile.encoding=ISO-8859-1 skal ligges ind i det script der kører
Resin.
Avatar billede milla Nybegynder
15. maj 2003 - 09:30 #3
Arne v -> Jamen det er jo lige det jeg ikke har forstand på :) Jeg har lagt kommandoen httpd.sh start i rc.local. Hvor skal jeg så lægge Dfile.encoding=ISO-8859-1 ??
Avatar billede arne_v Ekspert
15. maj 2003 - 09:34 #4
I opstarts scriptet må der være en kommando:

java -classpath diverse-jar-file resin-main-class

den skal ændres til:

java -Dfile.encoding=ISO-8859-1 -classpath diverse-jar-file resin-main-class
Avatar billede milla Nybegynder
15. maj 2003 - 09:38 #5
Tænker du på Resins opstartsscript? Hvor finder jeg det henne?
Avatar billede arne_v Ekspert
15. maj 2003 - 09:41 #6
I httpd.sh som ligger i Resin's bin directory (muligvis den samme
som du har kopieret til rd.local er der følgende (i version 2.1.9):

# Extra arguments to Java.  If you're passing arguments to the JVM, you'll
# need to use -Jxxx.  For example, args="-J-ms48m".  You can modify
# the pid file with args="-pid server-a.pid"
#
args=

det prøver du at ændre til:

args=-J-Dfile.encoding=ISO-8859-1
Avatar billede milla Nybegynder
15. maj 2003 - 10:01 #7
Nu har jeg rodet lidt med det og sat args=-J-Dfile.encoding=ISO-8859-1, men det løste desværre ikke mit problem :(
Avatar billede arne_v Ekspert
15. maj 2003 - 10:17 #8
Er det ren JSP der giver problemer eller er det tekst hentet op fra
en database ?
Avatar billede milla Nybegynder
15. maj 2003 - 11:48 #9
Det er ren JSP
Avatar billede min.dk Nybegynder
16. maj 2003 - 09:17 #10
Det kunne ikke ha' noget at gøre med at RedHat fra 8.0 brugte utf tegnsæt, hvilket fleste programmer ikke understøtter endnu?
Avatar billede arne_v Ekspert
17. maj 2003 - 23:35 #11
Jeg har prøvet om jeg kunne genskabe det på min Linux box, men
selvfølgelig ikke (Redhat 7.2, Java SDK 1.3.1_01, Resin 2.1.9).

Men det kan der være mange grunde til.

Det må imidelrtid kunne løses. Der er stort set kun 2 mulige
grunde til problemet:
  - der sendes UTF-8 labelet som ISO-8859-1
  - der sendes ISO-8859-1 labelet som UTF-8

Ideer til at komme videre:

1)

Prøv og lav en JSP side med:

<%=System.getProperty("file.encoding")%>

og fortæl hvad den viser.

2)

Prøv og lav en JSP side med kun en linie med:

ÆØÅæøå

og fortæl hvor stor filen er (som vist i ls -l) og
præcis hvordan tegnene ser ud i browseren.
Avatar billede arne_v Ekspert
17. maj 2003 - 23:36 #12
Kan du iøvrigt bekræfte at:

<web-app character-encoding='ISO_8859-9'></web-app>

er en tyrk-fejl og at der står:

<web-app character-encoding='ISO-8859-1'></web-app>

?
Avatar billede milla Nybegynder
19. maj 2003 - 07:47 #13
Det var en tyrk fejl at der stod <web-app character-encoding='ISO_8859-9'></web-app>  istedet for <web-app character-encoding='ISO-8859-1'> ... Det er nu rettet og ved en <%=System.getProperty("file.encoding")%> giver den resultatet ->  ISO-8859-1

Jeg har lavet en fil med følgende tegn: ÆØÅæøå i ren html, det virker, så forsøgte jeg at tilføje linien: <%out.println("æøååæøÆÅØ");%> og det gik helt galt. Så for jeg følgende ÆØÅæøå ??
Avatar billede arne_v Ekspert
19. maj 2003 - 08:04 #14
æøååæøÆÅØ er 9 tegn - hvor mang etegn kommer der ud af det ? 9 ? 18 ?
Avatar billede milla Nybegynder
19. maj 2003 - 08:17 #15
12 tegn, så vidt jeg kan afgøre
Avatar billede arne_v Ekspert
19. maj 2003 - 08:21 #16
Se det er mystisk.

Nej vent nu lige lidt.

Der kan godt være unprintable karakterer iblandt som man ikke kan se.

12 printable + 6 non printable = 18

Jeg er 99% sikker på at problemet er at der outputtes UTF-8 labelled som ISO-8859-1 !
Avatar billede arne_v Ekspert
19. maj 2003 - 08:25 #17
Prøv evt. at skifte til UTF-8 f.eks. ved at:

<%@page language="java" session="true" contentType="text/html;charset=UTF-8"%>

og se hvordan det så ser ud.
Avatar billede arne_v Ekspert
19. maj 2003 - 08:27 #18
Det kunne også være interressant med arne.jsp med 1 linie:
ÆØÅæøå
og se om den på disk fyldte 6 eller 12 bytes (ls -l).

Det vil vise om det er din JSP editor der gemmer i UTF-8 eller
det er JSP compileren der laver kage i det.
Avatar billede milla Nybegynder
19. maj 2003 - 08:41 #19
<%@page language="java" session="true" contentType="text/html;charset=UTF-8"%>

giver følgende fejl :

java.io.CharConversionException: illegal utf8 encoding
Avatar billede arne_v Ekspert
19. maj 2003 - 08:48 #20
Hvilket program bruger du til at skrive JSP i ?

Har du prøvet at lave den lille fil og set on ls -l vuser 6 eller 12 ?
Avatar billede milla Nybegynder
19. maj 2003 - 09:01 #21
arne.jsp fylder 6 bytes
Avatar billede arne_v Ekspert
19. maj 2003 - 09:49 #22
Så er der under selve JSP compileringen at der går ged i det.

Suk.

Har du mulighed for at prøve at opdatere Java SDK til 1.4.1_02 ?
Avatar billede arne_v Ekspert
19. maj 2003 - 09:51 #23
En pragmatisk men ikke særlig køn løsning vil være at bruge:

&AElig;
&Oslash;
&Aring;
&aelig;
&oslash;
&aring;
Avatar billede milla Nybegynder
19. maj 2003 - 09:55 #24
Jeg nedgraderede fra 1.4.1_02 da problematikken var den samme. Jeg havde også selv tænkt på ampsan løsningen, men det kan desværre umiddelbart bruges, så jeg er på ret bar bund
Avatar billede arne_v Ekspert
19. maj 2003 - 10:13 #25
Mit bedste forslag så er nok:

Brug:

<%@page language="java" session="true" contentType="text/html;charset=UTF-8"%>

og brug en editor til at skrive JSP i som kan gemme i UTF-8.
Avatar billede milla Nybegynder
19. maj 2003 - 10:49 #26
Jeg fik jo følgende fejl java.io.CharConversionException: illegal utf8 encoding ved at bruge <%@page language="java" session="true" contentType="text/html;charset=UTF-8"%>
Avatar billede arne_v Ekspert
19. maj 2003 - 10:58 #27
Jo men det er vel fordi at filen indeholder noget der ikke er
legal UTF-8.

Derfor jeg foreslår at få gemt filen i UTF-8.
Avatar billede milla Nybegynder
19. maj 2003 - 11:09 #28
Tak for hjælpen Arne, nu tro jeg sgu det virker. Ellers vender jeg sikkert tilbage
Avatar billede milla Nybegynder
19. maj 2003 - 11:10 #29
HVordan giver jeg dig dine points?
Avatar billede arne_v Ekspert
19. maj 2003 - 11:24 #30
Jeg ligger et svar !

:-)
Avatar billede arne_v Ekspert
19. maj 2003 - 11:24 #31
Hjalp det at gemme i UTF-8 ?
Avatar billede milla Nybegynder
19. maj 2003 - 11:26 #32
ja
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