[.NET] Spatie uit xsl wordt vervangen door rare tekens

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

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Een website merged XSL met XML door middel van .NET, in de XSL template worden op enkele plekken spaties geplaatst om bijvoorbeeld een titel en subtitel te scheiden van elkaar (zonder deze spatie of door een "softe" spatie staan ze tegenelkaar aan). De html entity die ik gebruik is:
code:
1
 


Nu gaat een ander programma deze dynamische pagina's inlezen (over http dus) en wegschrijven als html files. Het probleem is dat op de plekken van de spaties er vreemde tekens worden geplaatst, zoals:
code:
1
en
code:
1
ÂÂ


We hebben al een encoding toegevoegd:
code:
1
2
3
Stream stream = webClient.OpenRead(baseUrl + keyword);
StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("iso-8859-1"));
string result = reader.ReadToEnd();
Maar dit maakt niks uit, verschillende charsets maken ook weinig verschil.

Ik ben een beetje "confused" inmiddels door alle rotzooi die ik vind op Google (geen oplossingen tot zover), kan iemand me vertellen hoe ik dit probleem kan oplossen?

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Kun je dan niet de HTML entity voor spatie gebruiken? Dit is & nbsp;. (Zonder de spatie, dus)

Edit: Dacht ik al, hij werd geparst.

[ Voor 34% gewijzigd door Nick_S op 11-08-2005 16:19 ]

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Nope, dat vind de xml/xsl processor van .Net niet goed (msxml), krijg ik errors, undeclared enitity als ik me het goed herinner.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:55

Janoz

Moderator Devschuur®

!litemod

afaik is is de code voor spatie niet 160, maar 20.

Die vreemde tekens zijn trouwens een duidelijk gevolg van character encoding probleem. Het inlezen moet geen enkel probleem geven. Daar zitten geen rare tekens in. Die komen er pas bij het wegschrijven van het resultaat in. Je kunt dus beter met de encodings van de output gaan expirimenteren ipv de encodings van de input (zoals in je voorbeeld code gebeurt).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
De HTML nbsp moet je opnemen als
XML:
1
 
in de XML.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
  is U+00A0, i.t.t. de gewone spatie wat U+0020 is. In decimaal is 00A0 inderdaad 160.

[ Voor 10% gewijzigd door MSalters op 12-08-2005 10:15 ]

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
MSalters schreef op donderdag 11 augustus 2005 @ 17:07:
  is U+00A0, i.t.t. de gewone spatie wat U+0020 is. In decimaal is 00A0 inderdaad 160.
Zou je dit willen toelichten? Ie: waar heb je het over? ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Blue-eagle:
Zou je dit willen toelichten? Ie: waar heb je het over? ;)

offtopic:
Janoz:
afaik is is de code voor spatie niet 160, maar 20.
MSalters:
  is U+00A0, i.t.t. de gewone spatie wat U+0020 is. In decimaal is 00A0 inderdaad 160.
Oftewel:
Janoz: melp
MSalters: Janoz, STFU
O-) :+


Maar goed, heb je Glimi's oplossing al eens geprobeerd?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Blue-eagle schreef op vrijdag 12 augustus 2005 @ 09:22:
[...]
Zou je dit willen toelichten? Ie: waar heb je het over? ;)
(editje gedaan)
U+xxxx is de standaard manier om alle karakters aan te duiden, onafhankelijk van encoding. De notatie komt uit Unicode, en xxxx is het Unicode code point in hexadecimaal. De eerste 256 Unicode code points vallen samen met ISO-8859-1 (en de eerste 128 zijn dus ASCII)
U+0020 is een gewone spatie, U+00A0 een non-breaking spatie. In 8859-1 zijn dat dus 20/A0 (hex) of 32/160(decimaal)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:55

Janoz

Moderator Devschuur®

!litemod

spatie != non breaking spatie ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
MSalters, dank voor de uitleg, en Janoz, de XML is het probleem niet, de XSL wel :) Ik heb maar een tijdelijke work-around ingebouwd ivm. een deadline, maar op dit probleem kom ik nog terug, nu eerst even een gecrashede server-HDD restoren.. gotta love raid <3
Pagina: 1