Codieren kyrillischen Symbolen, die in HTTP-Anfragen in Java?
Gute Zeit!
Mein Adroid-app führt HTTP-request zu einem, der in der API-Dienste von Google. Sicher, es funktioniert, wenn die parameter der Anfrage in Englisch, aber wenn ich mein test-Funktion, mit der Kyrillisch - ich bekomme die 400-Fehler. Zu sein scheint, das problem ist die Codierung der Win-1251-string nach UTF-8 ?Wie kann man das in Java ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen:
URLEncoder.encode(yourString, java.nio.charset.StandardCharsets.UTF_8.toString())
Sollten Sie verwenden
URLEncoder#encode()
zu Kodieren request-Parameter.Beachten Sie, dass die Namen der parameter sollte eigentlich auch URL-kodiert werden, jedoch in diesem speziellen Beispiel, Sie sind alle gültig schon. Beachten Sie auch, dass wenn Sie mit Android eingebauten
HttpClient
- API, die Sie nicht brauchen, um dies zu tun.Alle
String
Objekte in Java codiert sind, in Unicode (UTF-16)und Unicode enthält Zeichen, die vom Windows-1251 Charakter
set.
Beispielsweise "Česká" ist "\u010Cesk\u00E1".
Wenn Sie möchten, senden Sie diese Zeichenfolge, um andere software mit einer anderen
Charakter gesetzt ist, dann müssen Sie zum konvertieren von string zu Byte
das Zeichen-set mit Klasse
CharsetEncoder
oder mitKlasse
OutputStreamWriter
übergabe desCharset
.Und wenn Sie einen string von der anderen software in einem anderen Charakter
legen Sie dann der Klasse
CharsetDecoder
oderInputStreamReader
mit der
Charset
für die Konvertierung in Unicode zurück.Update auf depricated parameter: