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

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Fejl i JavaScript???
Fra : Allan Unnerup


Dato : 12-09-02 13:05

Er der en fejl i JavaScripts håndtering af det internationale tegnsæt UTF-8?

Jeg har lavet et lille program, som kalder sig selv med parameteren "pålæg"
(i UTF-8: pålæg). Det kan kalde sig selv enten via JavaScript eller
direkte.

Hvis det kalder sig selv via JavaScript, bliver parameteren "pålæg" ikke
overført. (parameter: null)

Hvis det kalder sig selv direkte, bliver parameteren "pålæg" overført
korrekt. (parameter: pålæg)

Prøv selv her:
http://www.yachtdatabase.com/testJavaScript.jsp

Her er Java-koden til testJavaScript.jsp:
<%@ page contentType="text/html; charset=UTF-8" %>
<%
String parameter = (String) request.getParameter("parameter");
%>
<html>
<head><TITLE>Test JavaScript UTF-8</TITLE></HEAD>
<SCRIPT>
function test(ref){
window.open(ref, '', 'width=500,height=400');
}
</SCRIPT>
<BODY>
<h1>Test JavaScript UTF-8</h1>
Parameter: <%=parameter%> <b><- se her</b><br><br>
<a href="javascript:test('testJavaScript.jsp?parameter=pålæg');">Send
UTF-8 'pålæg' via JavaScript</a><br>
<a href="/testJavaScript.jsp?parameter=pålæg">Send UTF-8 'pålæg' uden om
JavaScript</a><br>
</BODY>
</html>

Med venlig hilsen
Allan



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


Dato : 12-09-02 13:07

Jeg glemte at skrive, at jeg benytter Windows 98 og IE 5.0. Jeg ved ikke om
det har betydning.

Hilsen Allan



Jonas Koch Bentzen (12-09-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 12-09-02 13:19

Allan Unnerup wrote:
>
> Er der en fejl i JavaScripts håndtering af det internationale tegnsæt UTF-8?
>
> Jeg har lavet et lille program, som kalder sig selv med parameteren "pålæg"
> (i UTF-8: pålæg). Det kan kalde sig selv enten via JavaScript eller
> direkte.
>
> Hvis det kalder sig selv via JavaScript, bliver parameteren "pålæg" ikke
> overført. (parameter: null)

Det gør den fint i Mozilla, Konqueror og Opera på Linux.

Så vidt jeg forstår, mener du, at problemet er, at der i det ene
tilfælde åbnes et vindue vha. window.open(). Jeg kan slet ikke se, at
det burde betyde noget som helst for tegnsættet på siden.


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


Dato : 12-09-02 14:43

> Det gør den fint i Mozilla, Konqueror og Opera på Linux.
>
> Så vidt jeg forstår, mener du, at problemet er, at der i det ene
> tilfælde åbnes et vindue vha. window.open(). Jeg kan slet ikke se, at
> det burde betyde noget som helst for tegnsættet på siden.

Det har ikke noget at gøre med at der åbnes et vindue. Problemet er, at via
JavaScript står der "null" og uden om JavaScrip står der "pålæg".

Prøv at se, hvor der står "se her".

Jeg har netop prøvet i IE version 6, og der fungerer det fint.

Hilsen Allan



Jonas Koch Bentzen (12-09-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 12-09-02 19:35

Allan Unnerup wrote:
>
>>Så vidt jeg forstår, mener du, at problemet er, at der i det ene
>>tilfælde åbnes et vindue vha. window.open(). Jeg kan slet ikke se, at
>>det burde betyde noget som helst for tegnsættet på siden.
>
>
> Det har ikke noget at gøre med at der åbnes et vindue. Problemet er, at via
> JavaScript står der "null" og uden om JavaScrip står der "pålæg".

Ja, men det eneste, som "via JavaScript" her indebærer, er, at der åbnes
et vindue. Der sker ikke rigtigt andet. Jo, adressen bliver selvfølgelig
brugt som et argument til en funktion, men det burde ikke betyde noget.

Men under alle omstændiger skal "pålæg" jo køres gennem escape() (eller
en tilsvarende JSP-funktion), før det bliver brugt som parameter i query
stringen. Den fejl skal selvfølgelig rettes - og hvis det så stadig ikke
virker, så kan vi begynde på teorierne om fejl i browserens
JavaScript-håndtering :)


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


Dato : 12-09-02 21:40

> Men under alle omstændiger skal "pålæg" jo køres gennem escape() (eller
> en tilsvarende JSP-funktion), før det bliver brugt som parameter i query
> stringen. Den fejl skal selvfølgelig rettes - og hvis det så stadig ikke
> virker, så kan vi begynde på teorierne om fejl i browserens
> JavaScript-håndtering :)

Hvorfor skal teksten "pålæg" køres igennem escape()?

Med venlig hilsen
Allan



Jonas Koch Bentzen (12-09-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 12-09-02 21:50

Allan Unnerup wrote:
>
>>Men under alle omstændiger skal "pålæg" jo køres gennem escape() (eller
>>en tilsvarende JSP-funktion), før det bliver brugt som parameter i query
>>stringen. Den fejl skal selvfølgelig rettes - og hvis det så stadig ikke
>>virker, så kan vi begynde på teorierne om fejl i browserens
>>JavaScript-håndtering :)
>
>
> Hvorfor skal teksten "pålæg" køres igennem escape()?

Du overfører jo parameteren vha. HTTP. HTTP tillader ikke sådan noget
som æ, ø og å (hverken ISO-8859-1- eller Unicode-udgaverne) i URI'er.
Prøv at søge på "pålæg" i Google og læg mærke til, hvordan ordet ser ud
i query stringen.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste