JSON export String Unicode?

nit19969

Mitglied
Hi,
Ich bin auf folgendes Problem gestoßen.
Ich habe mir eine JSON geschrieben mit Sonderzeichen und auch polnischen Alphabet. Beim einlesen funktioniert alles und wird auch in javafx fehlerfrei dargestellt. Aber beim Schreiben in eine Datei bekomme ich nur ? anstatt der Umlaute. Gibt es eine Hilfsklasse, um die Strings in utf zu convertieren oder wie mache ich das am besten
 

KonradN

Super-Moderator
Mitarbeiter
Hi,
Ich bin auf folgendes Problem gestoßen.
Ich habe mir eine JSON geschrieben mit Sonderzeichen und auch polnischen Alphabet. Beim einlesen funktioniert alles und wird auch in javafx fehlerfrei dargestellt. Aber beim Schreiben in eine Datei bekomme ich nur ? anstatt der Umlaute. Gibt es eine Hilfsklasse, um die Strings in utf zu convertieren oder wie mache ich das am besten
Ich würde vermuten, dass Du einfach ein falsches Encoding nutzt beim schreiben / lesen. Du schreibst in einem Encoding und die ? siehst Du, weil Du vermutlich versuchst, es in einem anderen Encoding zu lesen / anzuzeigen.

Wenn Du ein bestimmtes Encoding haben willst, dann musst Du dieses aktiv setzen. Also z.B. bei PrintWriter kannst Du das Charset mit angeben.
 
Y

yfons123

Gast
kann es sein dass dein editor einfach keine polnischen zeichen darstellen kann?

also dass ansich diese zeichen da stehen aber der editor mit dem du das öffnest rafft es einfach niccht ?
 

nit19969

Mitglied
kann es sein dass dein editor einfach keine polnischen zeichen darstellen kann?

also dass ansich diese zeichen da stehen aber der editor mit dem du das öffnest rafft es einfach niccht ?
Nein, daran liegt es nicht, für json nutze ich visual Studio. Die von Hand geschrieben JSON wird normal angezeigt.
und wenn ich einen beliebigen String in ein JSONObject reingebe kommt eine Fehlermeldung.
// JSONObject uk = new JSONObject();
// uk.put("uk","Пожертвуйте гроші");
1651130502273.png
 

LimDul

Top Contributor
CP1252 würde ich nicht als sinnvolles Encoding ansehen, in der Regel sollte man man eher auf UTF-8 setzen.

Aber es handelt sich wie man da sieht eindeutig um ein Encoding Problem. Du musst an jeder Stelle - egal ob von Hand im Editor oder im Programm - sicherstellen, dass das gleiche Encoding verwendet wird.
 

KonradN

Super-Moderator
Mitarbeiter
Das Problem ist also, dass Java kein UTF-8 Encoding nutzt. Da dies im Rahmen der Programmlogik auch gefordert ist, sollte man es generell im Source setzen und nicht auf den Standard vertrauen.

Du kannst es aber durchaus ausprobieren - nutze beim Aufruf einmal -Dfile.encoding=UTF-8, damit setzt Du das default Encoding deines Programms auf UTF-8 und die Datei wird (hoffentlich) korrekt geschrieben. (Ganz am Rande: Ab Java 18 wird das UTF-8 auch zum default encoding auf allen Plattformen!)
 

Robert Zenz

Top Contributor
Das es wieder ein Haus und Hof Them von mir ist, hole ich etwas aus.

Wie wir alle wissen werden Dateien als Bytes gespeichert. Damit stellt sich natuerlich die Frage "Welcher Byte-WErt zwischen 0 und 255 soll das Zeichen A darstellen?". Der findige (und klugscheiszerische) Entwickler Antwortet natuerlich mit "65". Soweit so gut, aber was it mit dem Zeichen "й"? Da scheiden sich die Geister...

Also das Encoding der Datei musst du verstehen als Mapping von Byte-Wert auf Zeichen, und da sich hier immer die Geister geschieden haben, gibt es davon viele Unterschiedliche. In der Zwischenzeit hat sich die Welt weitestgehend geeinigt das UTF-8 das Encoding der Wahl ist. Es ist kompatibel mit ASCII in den Wertden von 0-128, und kann bis zu vier Byte pro Zeichen verwenden. Also "й" wird gespeichert als die Bytes "208 185", quasi "zweite Seite, dieses Zeichen". Damit kann UTF-8 fast alle Sprachen und Zeichen problemlos abbilden. Jetzt betritt Microsoft die Buehne, Microsoft verwendet seit jeher ein ISO 8859-1 Derivat, naemlich CP-1252 (auch bekannt als Windows 1252), welches zwar auch in den Bytes 0-128 kompatibel ist zu ASCII (und damit zu UTF-8), aber darueber hinaus einfach gar nichts gemein hat. Zusaetzlich kann CP-1252 nicht mal annaehernd die Menge an Zeichen abbilden wie UTF-8.

Daraus ergibt sich die tolle Situation, dass Text welcher auf Windows Maschinen geschrieben wird, und mehr als Lateinische Zeichen enthaelt, einfach Kacke zum verarbeiten ist auf allem was nicht Windows ist (auch bekannt als: Der Rest der Welt). Und genau dieses Problem hast du jetzt.

Du willst deine JSON Dateien *immer* als UTF-8 speichern (im Zweifelsfall einen Editor holen der das kann, zum Beispiel Notepad++), und du willst beim lesen und schreiben in Java *immer* explizit das Charset auf UTF-8 setzen (StandardCharSets.UTF8. Dann hast du diese Probleme nicht mehr. Und du willst auch deine IDE umstellen, so das fuer Quellcode immer UTF-8 verwendet wird, und nicht der Plattform-Standard (in deinem Fall CP-1252).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Json Objekt sinnvoll plätten? XML & JSON 1
W com.android.volley.ParseError: org.json.JSONException: End of input at character 0 of XML & JSON 6
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
mananana Frage zu JSON XML & JSON 3
wofus JSON filtern nach bestimmten Wert XML & JSON 7
L Json reader XML & JSON 15
megusta JSON umschreiben (converter)? XML & JSON 4
P verschachteltes json verändern XML & JSON 3
Avalon JSON flatten und wieder in DTO konvertieren XML & JSON 21
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
Z json inkl. Array/Verschachtelung erstellen XML & JSON 2
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
Trèfle Formatierung v. JSON File XML & JSON 7
M json page 2 auslesen XML & JSON 1
K JSON mit GSON nutzen XML & JSON 4
S Java REST Client + Json XML & JSON 8
W Search Value in Json XML & JSON 6
K JSON-Bibliothek XML & JSON 5
M Großes Json Objekt benutzen XML & JSON 5
M Json auslesen XML & JSON 7
M Xml oder Json? XML & JSON 15
J JSON zu Java mit der GSON Google API XML & JSON 0
G Jackson JSON: Dynamische Serialisierung XML & JSON 6
W Json von URL Lesen (mit Gson Library) XML & JSON 3
W Json von URL Lesen XML & JSON 2
L Jackson JSON: Probleme beim einlesen XML & JSON 1
J JSon-Converter gesucht XML & JSON 2
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
J JSon <-> XML zwecks Validierung XML & JSON 4
M [JSON] Wie Splitten? XML & JSON 14
G Mit JSON Java und C# verbinden XML & JSON 4
F Wikipediaeintrag XML-Export.. XML & JSON 4
sylo Nach Export wird SAXParseException nicht mehr geworfen XML & JSON 4
G XML Export und Import eines Files. gibts Tutorials o.ä? XML & JSON 2
Sachinbhatt Python string find() examples XML & JSON 1
W Request als String XML & JSON 0
L Soapnachricht aus String erstellen XML & JSON 0
R String in XSLT teilen XML & JSON 3
P Bestimmte XML-Inhalte in String lesen XML & JSON 2
M RSS als String speichern XML & JSON 12
W XMLStreamReader zu String machen? XML & JSON 2
B XML-Element als String ausgeben XML & JSON 5
H XML String auslesen XML & JSON 4
H XML String erstellen XML & JSON 4
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
N XML-String in MIDP auslesen XML & JSON 3
W String nach XML nach String verwandeln XML & JSON 4
W XML DomDocument als String auslesen XML & JSON 2
B jdom document aus string erzeugen? XML & JSON 1
H Adapter: String->Element bzw. Element->String XML & JSON 6
A XML Tags als PHP String XML & JSON 4
S String in element casten XML & JSON 2
I XML-String mit SAX parsen ? XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
G Elementbaum in String umwandeln XML & JSON 5
A StAX API: Cannot Cast from QName to String! XML & JSON 2
S org.jdom.document in String umwandeln. XML & JSON 2
S DefaultMutableTreeNodes als String in Textdatei speichern XML & JSON 7
W Xml-String parsen XML & JSON 2
B XML String einlesen XML & JSON 4
R XML Document als String XML & JSON 2
M Probleme mit String XML & JSON 3
G getAtributeValue liefert String mit störenden Steuerzeichen XML & JSON 2
D Text, String vor einem Root Element einfügen XML & JSON 2
R wie kann ich ein xml file in einen string einlesen? XML & JSON 2
E Element.setTextContent(String); Ersatz fuer Version 1.4? XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben