[ASP / XML] UTF-8 karakters inputted via form opslaan in xml

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Via een formulier krijg ik data binnen die opgeslaan moet worden in een XLM-bestand. Naast gewone ASCII-input kan de invoer ook bestaan uit Russische of Griekse tekens.
Ik slaag er niet in de karakters correct in de xml te zetten.
- de pagina's en de form staan op utf-8
- de xml staat ook in utf-8 (en bevat zelf al speciale tekens)

HTML: pagina.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
     <head>
          <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     </head>
     <body>
          <form name="frm" action="save.asp" method="post" accept-charset="UTF-8">
               <p>
                    <input type="text" name="espanol" value="Tecla de Emergencia">
                    <input type="text" name="russian" value="&#1050;&#1083;&#1072;&#1074;&#1080;&#1096;&#1072; &#1089;&#1080;&#1075;&#1085;&#1072;&#1083;&#1072; &#1090;&#1088;&#1077;&#1074;&#1086;&#1075;&#1080;">
                    <input type="text" name="finnish" value="Hälytysnäppäin">
                    <input type="text" name="greek" value="&#928;&#955;&#942;&#954;&#964;&#961;&#959; &#917;&#953;&#948;&#959;&#960;&#959;&#943;&#951;&#963;&#951;&#962;">
               </p>
               <p><input type="submit" value="save"></p>
          </form>
     </body>
</html>


XML: list.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
*** opmerking: in het eigenlijke xml-document staan de vreemde karakters als karakter geschreven ipv als code, maar GoT neemt ze hier blijkbaar niet... ***
     <translations>
          <usedbatteries type="text">
               <english>Used batteries</english>
               <deutsch>gebrauchte Batterien</deutsch>
               <francais>Piles usées </francais>
               <espanol>Baterías usadas</espanol>
               <italiano>Batterie scariche</italiano>
               <russian>&#1048;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1085;&#1099;&#1077; &#1073;&#1072;&#1090;&#1072;&#1088;&#1077;&#1080;</russian>
               <polish>Zu&#380;yte baterie</polish>
               <svenska>Använda batterier</svenska>
               <dansk>Brugte batterier</dansk>
               <norsk>Brukte batterier</norsk>
               <finnish>Käytetyt akut</finnish>
               <nederlands>Gebruikte batterijen</nederlands>
               <portuguese>Pilhas usadas</portuguese>
               <greek>&#935;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#951;&#956;&#941;&#957;&#949;&#962; &#956;&#960;&#945;&#964;&#945;&#961;&#943;&#949;&#962;</greek>
          </usedbatteries>
     </translations>


ASP: save.asp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ Language=VBScript %>
<% option explicit %>
<%
     dim XML, xField, xTalen, xTaal, xSub
     Set XML = Server.CreateObject("Msxml2.DomDocument")  
     XML.async = false
     if XML.Load(server.mappath("list.xml")) then 

          ' ... set xTalen = overzicht talen
          ' ... set xField = juiste veld of nieuw veld
          
          for each xTaal in xTalen
               set xSub = xField.selectSingleNode(xTaal.nodeName)
               if xSub is nothing then 
                    set xSub = xml.createElement(xTaal.nodeName)
                    xField.appendChild(xSub)
               end if
               ' xSub.text = request.form(xTaal.nodeName) 
               xSub.text = "&#922;&#945;&#957;&#940;&#955;&#953; &#956;&#957;&#942;&#956;&#951;&#962; &#922;&#945;&#957;&#940;&#955;&#953; &#956;&#957;&#942;&#956;&#951;&#962; "  ' test
*** in bovenstaande tekst staat de string ook in vreemde tekens, maar GoT zet het terug om naar codes... ***
          next 
          XML.save(server.mappath("list.xml"))
     end if
     set xml = nothing
     
'response.end 
     response.redirect request.form("from")
%>


... resultaat is telkens dat er in de xml iets terug te vinden is als "Κανάλι μνήμης Κανάλι μνήμης" ipv "Κανάλι μνήμης Κανάλι μνήμης ", terwijl die karakters wel perfect mogelijk zijn in de xml

Heeft er iemand een idee wat er misloopt?

alvast bedankt,
Benedikt Beun

Acties:
  • 0 Henk 'm!

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
waar bekijk je de xml file in?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
*** opmerking: in het eigenlijke xml-document staan de vreemde karakters als karakter geschreven ipv als code, maar GoT neemt ze hier blijkbaar niet... ***
Dit kun je voorkomen door een [nohtml] tag er omheen te zetten.
... resultaat is telkens dat er in de xml iets terug te vinden is als "Κανάλι μνήμης Κανάλι μνήμης" ipv "Κανάλι μνήμης Κανάλι μνήμης ", terwijl die karakters wel perfect mogelijk zijn in de xml
De eerste string is UTF-8 voor de tweede string, bekeken in een ‘niet UTF-8’ editor.
De tekst is dus wel correct opgeslagen.

Testen in Windows: open kladblok en plak de ‘foute’ tekst. Sla het bestand vervolgens op met codering ANSI. Open het bestand vervolgens met codering UTF-8.

[ Voor 9% gewijzigd door Icelus op 03-08-2007 15:02 ]

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Check eerst eens de charset in je HTTP Content-Type header

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En zet eens bovenin je .asp (eerste regel!) het volgende:

ASP:
1
<%@Codepage="65001"%>

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Yes.... dat laatste (@codepage) werkt :-D
bedankt RobIII

@ Icelus: De tekst was in niet-UTF8 opgeslaan in een wel UTF8-bestand, anders zou in de xml de oude, wel correcte UTF8-tekens er niet staan... (eindresultaat van de code was een xml met zowel de wel UTF8-tekens in tags waar niets gewijzigd werd, als de nieuw gewijzigde niet-UTF8-string)

maar ok, het werkt nu dus, bedankt voor jullie input allemaal

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Verwijderd schreef op dinsdag 07 augustus 2007 @ 09:22:
@ Icelus: De tekst was in niet-UTF8 opgeslaan in een wel UTF8-bestand, anders zou in de xml de oude, wel correcte UTF8-tekens er niet staan... (eindresultaat van de code was een xml met zowel de wel UTF8-tekens in tags waar niets gewijzigd werd, als de nieuw gewijzigde niet-UTF8-string)
Het lijkt dat het script UTF-8 gegevens binnenkreeg maar dacht dat dit ISO-8859-1 (?) was. Vervolgens werd dit naar UTF-8 omgezet en in de XML gezet.

Developer Accused Of Unreadable Code Refuses To Comment

Pagina: 1