Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

SOAP fault/response: welke charset?

Pagina: 1
Acties:

  • LePlatDuJour
  • Registratie: April 2002
  • Laatst online: 22-11 20:50

LePlatDuJour

Fighting entropy since 1970

Topicstarter
Gevalletje standaardenonderzoek. Is ergens vastgesteld welke charset gebruikt moet worden bij het teruggeven van een SOAP fault?

Dus, stel de afzender gebruikt EBCDIC op de transportlaag en/of in het XML bericht: is dan gedefinieerd of de SOAP fault ook als EBCDIC teruggegeven moet worden, of MAG ook UTF-8 gebruikt worden?

Pointers appreciated (maar hier haal ik het niet uit)..

What use is a man walking on water if you don't follow in his footsteps?


  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

Heb geen ervaring met SOAP, maar bij XML kan de encoding vrij makkelijk op UTF-8 worden gezet

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22-11 22:17

chem

Reist de wereld rond

Je geeft in je soap fault al mee welke encoding het is. Dus je mag het teruggeven in wat handig is in jouw usecase.

Als de ontvangende partij voor gewone responses ebcdic krijgt is het imho logisch dat de soapfaults dat dan ook zijn.

Klaar voor een nieuwe uitdaging.


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 21-11 12:58
Ben je ook echt een client tegengekomen die hier op stuk gaat? Anders heeft het toch geen zin om de spec te gaan spellen, laat die client maar wijzen waar dat dan zou staan. Er staat dat alles van SOAP in XML is, en XML in UTF-8 is zonder meer gewoon geldig.

EBCDIC is trouwens helemaal niet logisch ;)

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
matthijsln schreef op maandag 14 oktober 2013 @ 17:42:Er staat dat alles van SOAP in XML is, en XML in UTF-8 is zonder meer gewoon geldig.
geen enkel stuk tekst (ook geen xml) is geldig zonder charset.
Als ik deze webpagina (die keurig valide is) als utf-16 gaan inlezen gaat het toch mis.

Kortom: geef gewoon netjes charset mee.

zie (ook als je het al weet, want het is een leuk verhaal):
http://www.joelonsoftware.com/articles/Unicode.html

[ Voor 12% gewijzigd door BasieP op 14-10-2013 18:20 ]

This message was sent on 100% recyclable electrons.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
XML is geen gewone tekst. Omdat je a priori weet dat het XML is, weet je dat de eerste regel begint met <?xml version="1.0" en mogelijk daarna encoding=. Je XML parser moet die charset gebruiken, en geen enkele andere,

Dat kan betekenen dat je parser begint met het inlezen als UTF-16, er vrij snel achter komt dat het eerste karakter geen "<" is, en opnieuw begint. Dat is een implementatie detail, zolang het resultaat uiteindelijk maar klopt.

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


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 21-11 12:58
Sterker nog, bij gebruik van UTF-16 moet een XML entity verplicht beginnen met een byte-order-mark. Zie de tweede paragraaf van: http://www.w3.org/TR/REC-xml/#charencoding

Zie ook appendix F "Autodetection of Character Encodings", waar ook EBCDIC wordt genoemd: http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info

Ik zie trouwens in paragraaf 4.3.3 expliciet staan "Each external parsed entity in an XML document may use a different encoding for its characters", dus kan je wel stellen dat je SOAP fault gewoon in een andere encoding dan het binnengekomen SOAP message teruggestuurd mag worden.

@BasieP met XML in UTF-8 bedoelde ik wel een XML entity met de encoding genoemd in de XML encoding declaration, of in een externe HTTP/MIME declaratie. Met "zonder meer" doelde ik op eventuele extra eisen die buiten de XML/SOAP specs zijn genoemd. Sommige specs die XML of SOAP gebruiken vereisen bijvoorbeeld dat alles in UTF-8 geencode moet zijn.

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
mensen even voor de goede orde: ik zeg nergens dat xml 'gewoon text' is, ik zeg dat je een charset moet meegeven.
Dit is precies wat je zou moeten doen in xml en dus in soap.
same goes for html etc.

ik reageerde puur en alleen om duidelijk te maken dat als je een stelling poneerd als:
Er staat dat alles van SOAP in XML is, en XML in UTF-8 is zonder meer gewoon geldig.
dat veel mensen dan lezen:
ow als ik mijn xml utf8 encode is het goed. Dat is zeker niet het geval.

idd zit in xml (en nog meer in soap) dat je encodings kunt opgeven, en daar moet je dus gebruik van maken.

vraag van de TS is kort door de bocht:
"welke encoding moet ik toepassen?"

en het enige goede antwoord is dan:
"maakt geen fuck uit, zolang je het maar expliciet vermeld"

This message was sent on 100% recyclable electrons.


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 21-11 12:58
BasieP schreef op maandag 14 oktober 2013 @ 20:45:
[...]
dat veel mensen dan lezen:
ow als ik mijn xml utf8 encode is het goed. Dat is zeker niet het geval.
Ik denk niet dat veel mensen dat in mijn uitspraak lezen. Er staat alleen dat XML in UTF-8 geencode geldige XML is. Wat jij er van maakt staat er niet.
vraag van de TS is kort door de bocht:
"welke encoding moet ik toepassen?"

en het enige goede antwoord is dan:
"maakt geen fuck uit, zolang je het maar expliciet vermeld"
Dat was de vraag van de TS helemaal niet.

Daarnaast kan het best wat uitmaken welke je encoding gebruikt hoor, UTF-16 kost veel meer bandbreedte bijvoorbeeld en EBCDIC hoeft niet verplicht door alle XML parsers ondersteund te worden.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zolang je het maar expliciet declareert dus.

Imo wel een reden om UTF-8 te kiezen ipv EBCDIC: Laatstgenoemde lijkt enigszins gedateerd/minder courant. Als je dus in het algemeen een leuke API wil opzetten wil je niet met zo'n gekke :+ incomplete charset blijven zitten. Prima als oude systemen met oude crap blijven werken, zolang mensen die in t heden zitten maar alles met UTF-8 kunnen doen. :Y)

{signature}


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
matthijsln schreef op maandag 14 oktober 2013 @ 21:05:
[...]

Ik denk niet dat veel mensen dat in mijn uitspraak lezen. Er staat alleen dat XML in UTF-8 geencode geldige XML is. Wat jij er van maakt staat er niet.
Beste Matthijs

Ik quote je niet om je af te zeiken. ik kwoot je om dingen duidelijker te maken.
Je hebt de essentie van mijn post niet door, en door er dan op te reageren wordt het niet veel helderder.

Je zegt dat jij denkt dat niet veel mensen jou uitspraak zo lezen. Nou ik deed dat wel. Ik gok dat ik niet uniek ben en dat er wel anderen zijn die het wel zo lezen.

Nogmaals, ik zeg niet 'matthijs je hebt ongelijk en dus ga ik je in de zeik zetten', ik zei
geen enkel stuk tekst (ook geen xml) is geldig zonder charset.
Als ik deze webpagina (die keurig valide is) als utf-16 gaan inlezen gaat het toch mis.

Kortom: geef gewoon netjes charset mee.
Ik viel je dus niet aan.
[...]
Dat was de vraag van de TS helemaal niet.
Ik zei niet 'de topic starter zei ...'
maar 'de topic starter zei kort door de bocht...'
Dus, stel de afzender gebruikt EBCDIC op de transportlaag en/of in het XML bericht: is dan gedefinieerd of de SOAP fault ook als EBCDIC teruggegeven moet worden, of MAG ook UTF-8 gebruikt worden?
ik lees daar toch echt 'mag ik UTF-8 gebruiken'

Waarop mijn antwoord dus (nogmaals) is:
tuurlijk, maar geef aan wat het is. want tekst zonder encoding is waardeloos.
Daarnaast kan het best wat uitmaken welke je encoding gebruikt hoor, UTF-16 kost veel meer bandbreedte bijvoorbeeld en EBCDIC hoeft niet verplicht door alle XML parsers ondersteund te worden.
Volgens mij weet iedereen in dit topic dat utf-16 meer bits gebruikt dan utf-8. Dus door opeens te beginnen over bandbreedte is beetje uit de context.
En EBCDIC is gewoon een encoding, en als jij de encoding meegeeft doe je het goed of dat nou UTF-8 of EBCDIC of UTF-16 is, dat maakt niet uit.
Natuurlijk is het beter als je even kijkt naar je parser, maar de vraag gaat hier niet over parsers, maar over wanneer je soap bericht valid is (in dit geval een soap fault).

This message was sent on 100% recyclable electrons.


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 21-11 12:58
BasieP schreef op maandag 14 oktober 2013 @ 22:01:
[...]
ik lees daar toch echt 'mag ik UTF-8 gebruiken'

Waarop mijn antwoord dus (nogmaals) is:
tuurlijk, maar geef aan wat het is. want tekst zonder encoding is waardeloos.
De vraag was of dezelfde encoding gebruikt moest worden als het ontvangen message. Het antwoord is dus nee.

Niemand heeft het erover om een antwoord te sturen zonder vermelding van encoding.
Volgens mij weet iedereen in dit topic dat utf-16 meer bits gebruikt dan utf-8. Dus door opeens te beginnen over bandbreedte is beetje uit de context.
En EBCDIC is gewoon een encoding, en als jij de encoding meegeeft doe je het goed of dat nou UTF-8 of EBCDIC of UTF-16 is, dat maakt niet uit.
Natuurlijk is het beter als je even kijkt naar je parser, maar de vraag gaat hier niet over parsers, maar over wanneer je soap bericht valid is (in dit geval een soap fault).
Jij zegt dat welke encoding je gebruikt geen 'fuck' uitmaakt. De context is dus dat dat wel uitmaakt. Naast het al genoemde niet verplicht ondersteunen van EBCDIC door XML parsers (een essentieel onderdeel van het begrijpen van een SOAP fault) is er ook nog het detail dat EBCDIC maar een extreem beperkt aantal Unicode codepoints ondersteunt. Nogal een verschil dus.

  • LePlatDuJour
  • Registratie: April 2002
  • Laatst online: 22-11 20:50

LePlatDuJour

Fighting entropy since 1970

Topicstarter
Jongens, lief zijn.
Ik zie trouwens in paragraaf 4.3.3 expliciet staan "Each external parsed entity in an XML document may use a different encoding for its characters", dus kan je wel stellen dat je SOAP fault gewoon in een andere encoding dan het binnengekomen SOAP message teruggestuurd mag worden.
Dank, dat had ik nodig! Overigens...
Ben je ook echt een client tegengekomen die hier op stuk gaat?
Zit momenteel in een organisatie waar the blame game op het scherpst van de snede wordt gespeeld, dus enige backing qua standaarden is wel fijn.

What use is a man walking on water if you don't follow in his footsteps?

Pagina: 1