/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JSP og UTF-8
Fra : Allan Unnerup


Dato : 10-08-02 16:50

Nedenstående kode virker ikke som JSP, men den tilsvarende kode virker fint
som servlet.

<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%
response.setContentType("text/plain; charset=UTF-8");
%>
<html>
<head><title>Hello World</title></head>
<BODY>
Hello World in Russian (Cyrillic):<br>
\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439,
\u041c\u0438\u0440<br>
<br>
</BODY>
</html>

Er problemet at man ikke kan benytte response.setContentType i en JSP?

Med venlig hilsen
Allan Unnerup



 
 
bvli (10-08-2002)
Kommentar
Fra : bvli


Dato : 10-08-02 18:47



Allan Unnerup wrote:
> Nedenstående kode virker ikke som JSP, men den tilsvarende kode virker fint
> som servlet.
>
--zip zip--
>
> Er problemet at man ikke kan benytte response.setContentType i en JSP?
>
Måske det kunne være fordi jsp-siden når den er compilet, kalder
"getWriter" *før* setContentType bliver kaldt?

Ser lige at Resin gør sådan:
<snip>
javax.servlet.jsp.JspWriter out = (javax.servlet.jsp.JspWriter) pageContext.
getOut();
javax.servlet.ServletConfig config = getServletConfig();
javax.servlet.Servlet page = this;
javax.servlet.http.HttpSession session = pageContext.getSession();
javax.servlet.ServletContext application =
pageContext.getServletContext();
response.setContentType("text/html");
try {
pageContext.write(_jsp_string0, 0, _jsp_string0.length);

response.setContentType("text/plain; charset=UTF-8");
</snip>

Det nederste er den response.setContentType(..) der bliver kaldt i selve
jsp siden, og det er /efter/ out er instantieret.

Der findes garanteret en workaround.. Er dog ikke lige faldet over den.

--
Bjarke



> Med venlig hilsen
> Allan Unnerup
>
>


Thorbjoern Ravn Ande~ (10-08-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 10-08-02 19:26

"Allan Unnerup" <alu@udkik.dk> writes:

> Er problemet at man ikke kan benytte response.setContentType i en JSP?

Du skal angive det i <%@page%>. Når din <%...%> kode udføres er det
for sent.

Nærlæs JSP-specifikationen.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Allan Unnerup (11-08-2002)
Kommentar
Fra : Allan Unnerup


Dato : 11-08-02 11:37

> > Er problemet at man ikke kan benytte response.setContentType i en JSP?
>
> Du skal angive det i <%@page%>. Når din <%...%> kode udføres er det
> for sent.
>
> Nærlæs JSP-specifikationen.

Det gør altså ingen forskel. Du kan meget vel have ret, men i givet fald er
der også noget andet galt.

<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head><title>Hello World</title>
</head>
<BODY>
Hello World in Russian (Cyrillic):<br>
\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439,
\u041c\u0438\u0440<br>
<br>
</BODY>
</html>








Allan Unnerup (11-08-2002)
Kommentar
Fra : Allan Unnerup


Dato : 11-08-02 15:30

> Nedenstående kode virker ikke som JSP, men den tilsvarende kode virker
fint
> som servlet.
>
> <%@ page import="java.util.*" %>
> <%@ page import="java.text.*" %>
> <%
> response.setContentType("text/plain; charset=UTF-8");
> %>
> <html>
> <head><title>Hello World</title></head>
> <BODY>
> Hello World in Russian (Cyrillic):<br>
> \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439,
> \u041c\u0438\u0440<br>
> <br>
> </BODY>
> </html>
>
> Er problemet at man ikke kan benytte response.setContentType i en JSP?
>

Efter en del try and error virker koden, hvis jeg erstatter
\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439,
\u041c\u0438\u0440
med
<%=new String("\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439,
\u041c\u0438\u0440".getBytes("UTF-8"), "UTF-8")%>

Jeg synes dog, at det er ulogisk, med denne konvertering, hvis \u er
escapekode til unicode, men det kan en af jer måske forklare det fornuftige
i?

Ifølge specifikationerne skal
response.setContentType("text/plain; charset=UTF-8");
erstattes med
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
men det gør ingen praktisk forskel i mit miljø: Red Hat + Apache + Resin.

Med venlig hilsen
Allan




Thorbjoern Ravn Ande~ (11-08-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 11-08-02 22:21

"Allan Unnerup" <alu@udkik.dk> writes:

> Jeg synes dog, at det er ulogisk, med denne konvertering, hvis \u er
> escapekode til unicode, men det kan en af jer måske forklare det fornuftige
> i?

Det er jo ikke Java-kildetekst men HTML der hvor du er. Jeg mener
ikke at dette understøtter disse escape-sekvenser. Hvad siger
JSP-specifikationen om hvordan tegn skal fortolkes på det sted?


--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Peter Kirk (12-08-2002)
Kommentar
Fra : Peter Kirk


Dato : 12-08-02 09:51

"Thorbjoern Ravn Andersen" <thunderbear@bigfoot.com> wrote in message
news:kku1m1w0ri.fsf@mimer.null.dk...
> "Allan Unnerup" <alu@udkik.dk> writes:
>
> > Jeg synes dog, at det er ulogisk, med denne konvertering, hvis \u er
> > escapekode til unicode, men det kan en af jer måske forklare det
fornuftige
> > i?
>
> Det er jo ikke Java-kildetekst men HTML der hvor du er. Jeg mener
> ikke at dette understøtter disse escape-sekvenser. Hvad siger
> JSP-specifikationen om hvordan tegn skal fortolkes på det sted?

I think you are correct. \u may be for Java, but not HTML (browser).
Try something like this in HTML:

&#1040; &#1041; &#1042; &#1043; &#1044; &#1045; &#1046; &#1047; &#1048;
&#1049;&nbsp;&#1050; &#1051; &#1052; &#1053; &#1054; &#1055; &#1056; &#1057;
&#1058; &#1059;
&#1060; &#1061; &#1062; &#1063; &#1064; &#1065; &#1066; &#1067; &#1068;

Peter.



Allan Unnerup (12-08-2002)
Kommentar
Fra : Allan Unnerup


Dato : 12-08-02 14:45

> > > Jeg synes dog, at det er ulogisk, med denne konvertering, hvis \u er
> > > escapekode til unicode, men det kan en af jer måske forklare det
> fornuftige
> > > i?
> >
> > Det er jo ikke Java-kildetekst men HTML der hvor du er. Jeg mener
> > ikke at dette understøtter disse escape-sekvenser. Hvad siger
> > JSP-specifikationen om hvordan tegn skal fortolkes på det sted?
>
> I think you are correct. \u may be for Java, but not HTML (browser).
> Try something like this in HTML:
>
> &#1040; &#1041; &#1042; &#1043; &#1044; &#1045; &#1046; &#1047; &#1048;
> &#1049;&nbsp;&#1050; &#1051; &#1052; &#1053; &#1054; &#1055; &#1056;
&#1057;
> &#1058; &#1059;
> &#1060; &#1061; &#1062; &#1063; &#1064; &#1065; &#1066; &#1067; &#1068;
>

You are both right. I can just write:
<%="\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439,
\u041c\u0438\u0440"%>

Thanks

Kind Regards,
Allan



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste