2017-02-23 1 views
-1

Ich habe 2 SaitenString zusätzlich mit einer anderen Zeichenfolge enthält "+"

String date = "23:02:2007"; 
String offset = "+08:00"; 

Wenn wir dieses Add wie

String dO = date+offset; 
syso("dO: "+dO); 

Wir sind das Ergebnis erwarten dO: 23:02:2007+08:00 sein sollte; Ich bekomme das obige Ergebnis, wenn ich dies in meiner lokalen Eclipse versuche. Aber wenn es um unsere dev-Server bereitgestellt wird, dann bekommen wir diese Antwort wie

dO: 23:02:2007 08:00; 

"+" fehlt und stattdessen ein " " wird hinzugefügt zu werden. Bitte helfen Sie mir dabei

+0

Haben Sie versucht, Offset allein auf dem Dev-Server zu drucken? –

+2

Wir haben keine Ahnung, was mit dieser Zeichenfolge passiert - ob das in einem Protokoll oder etwas anderem gesehen wird. Bitte geben Sie viel mehr Informationen und idealerweise ein [MCVE]. –

+0

dieser Code funktioniert gut von mir !! –

Antwort

0

Dies ist aufgrund der Codierung und Decodierung des Zeichens '+'. In Diensten wie Jersey wird das Plus-Symbol automatisch in den Raum dekodiert. Auch bei URLs wird das Plus-Symbol als Leerzeichen dekodiert (Sie können dies lösen, indem Sie es durch% 2B ersetzen).

Dies geschieht auch innerhalb einer Anfrage an ein Servlet senden. Dazu müssen alle Parameter mit Pluszeichen vor dem Senden URL-codiert werden. Wenn Sie uns den Kontext mitteilen könnten, in dem Sie diese Zeichenfolge verwenden, könnten wir eine genaue Lösung bereitstellen.

+0

Dank Vijayan, Meine Eingabe im XML-Format und in diese wie Startzeit bekommen 2017-02-23T12: 30Z, Offset + 8 : 00. Nach dem Parsen erhält ich Strings StartTime und Offset. Aber nach dem Parsen wird dieses "+" vom Offset durch "" ersetzt. Könnten Sie mir bitte helfen, wie Sie die ursprüngliche Zeichenfolge beibehalten, wie in der Anfrage, – Jam

+0

Das Zeichen '+' wird als ein Sonderzeichen in XML-Codierung betrachtet und es wird durch Leerzeichen ersetzt (UTF-8-Codierung). Dies ist ein Standardcodierungsmechanismus, und es ist nicht ratsam, diese Codierung zu ändern. In Anbetracht der Verwendung - dies betrifft nur ein Vorkommen; Daher können wir die replace() -Methode verwenden, um das Leerzeichen für diese Instanz in ein Pluszeichen umzuwandeln. Normalerweise wird diese Decodierung für URLs mit URLDecoder-Methode in Java verwendet. aber das ist in diesem Fall nicht anwendbar. –

Verwandte Themen