JSON für REST-Server



  • Die Zeichencodierung bei JSON ist AFAIK ja utf-8, so wird das 'Ä' per 0xC3,0x84 dargestellt.

    Wenn ich diese Zeichen in einem String auf einen mit dem REST-SDK von MS erstellten Server sende, wird der JSON nicht erkannt. Setze ich aber ein '%' vor jedes der beiden konvertierten Zeichen, also %C3%84, dann wird der JSON akzeptiert.
    Kann mir jemand erklären, warum das so ist??

    Grüße!



  • @dadidag sagte in JSON für REST-Server:

    Die Zeichencodierung bei JSON ist AFAIK ja utf-8, so wird das 'Ä' per 0xC3,0x84 dargestellt.

    Gib mal ein Beispiel, dass klingt komisch, dass im file selbst die Zeichenfolge 0xC3 0x84 steht.
    Wenn man sich ein UTF-8 kodiertes Textfile mit einem Editor anschaut, der UTF-8 kann, dann sollte der Editor das 'Ä' anzeigen statt die byte Darstellung



  • Hallo firefly,
    hab mich wahrscheinlich nicht klar ausgedrückt:

    • es geht nicht um den Inhalt einer Datei sondern um den String, den ich an den Server sende. Per Definition ist JSON utf-8, also müssen Zeichen >= 0x80 konvertiert werden und beim Ä ist es eben 0xc3 0x84.

    Die Frage ist:
    Warum MUSS man vor den 0xC3 und 0x84 jeweils ein '%' setzen?



  • @dadidag sagte in JSON für REST-Server:

    Warum MUSS man vor den 0xC3 und 0x84 jeweils ein '%' setzen?

    Du möchtest ja jeweils ein Byte mit den Werten 0xC3 bzw 0x84 haben.
    Diese Werte stehen aber in normalen Text.
    Wie soll der Parser das sonst von den jeweils zwei Zeichen 'C' '3' bzw,`. '8' '4' unterscheiden.

    In vielen Fällen haben sich die Escapesequenzen mit \ als Einleitung durchgesetzt.
    Bei einer URL nicht.



  • @dadidag sagte in JSON für REST-Server:

    Hallo firefly,
    hab mich wahrscheinlich nicht klar ausgedrückt:

    • es geht nicht um den Inhalt einer Datei sondern um den String, den ich an den Server sende. Per Definition ist JSON utf-8, also müssen Zeichen >= 0x80 konvertiert werden und beim Ä ist es eben 0xc3 0x84.

    Die Frage ist:
    Warum MUSS man vor den 0xC3 und 0x84 jeweils ein '%' setzen?

    Selbst in einem string sollten die Zeichenfolge "0xc3 0x84" nicht enthalten sein. Kopier doch mal den string in einen text-editor der UTF-8 kann und dort sollte dann an der Stelle ein 'Ä' auftauchen und nicht "0xc3 0x84"!
    0xC3 0x84 ist die 2 byte UTF-8 representation des zeichens 'Ä'