2016-06-29 14 views
1

Ich habe einige Inhalte in Base64 von meinem Server codiert.Textview unterstützt keine Decodierung von Base 64 Android

Wenn ich eine Antwort erhalte und versuche, sie zu dekodieren, werden keine neuen Zeilen und Leerzeichen im Inhalt angezeigt.

Der folgende Code dekodiert richtig, aber wenn ich es als Text der Textansicht einstelle, werden keine neuen Zeilen oder Leerzeichen im dekodierten Inhalt angezeigt.

Speichern Sie jedoch den Inhalt in sqlite decodiert und Anzeigen in SQLite Browser Notepad zeigen den Text korrekt.

String base64data = response.getString("data"); 
byte[] data = Base64.decode(base64data, Base64.DEFAULT); 
String text1 = new String(data, "UTF-8"); 

Mein dekodiert Inhalt ist wie:

In Typografie, der Punkt die kleinste Maßeinheit ist. Es wird zum Messen der Schriftgröße, des Zeilenabstandes und anderer Elemente auf einer gedruckten Seite verwendet. Die Größe des Punktes hat sich in der gesamten Druckgeschichte verändert. Seit dem 18. Jahrhundert variiert die Größe der Spitze von 0,18 bis 0,4 Millimeter.

  1. 1P2P (12 Punkte würden nur "1P" sein) - traditioneller Stil

  2. 1P2 (12 Punkte nur "1P" wären) -

  3. 14pt (12 Punkte Format für Desktops wäre "12 pt" oder "1pc", da es die gleiche wie 1 pica) -Format von Cascading Style Sheets definiert durch das World Wide Web Consortium [3]

Ein typographischen oder Drucker verwendet wird, s Fuß enthält 72 Picas oder 864 Punkte. Das Metric Act von 1866 legte ein legales Verhältnis von 1200: 3937 zwischen Fuß und Meter fest. [4] Für den Vermessungsfuß, der vor 1959 verwendet wurde, war dies 0,0002% mehr als 304,8 mm, die Länge des Internationalen Fußes, der durch das Internationale Yard and Pound Agreement von 1959 festgelegt wurde.

Und in Textview, wird es wie folgt zeigt:

In Typografie, der Punkt die kleinste Maßeinheit ist. Es wird zum Messen der Schriftgröße, des Zeilenabstandes und anderer Elemente auf einer gedruckten Seite verwendet. Die Größe des Punktes hat sich in der gesamten Druckgeschichte verändert. Seit dem 18. Jahrhundert variiert die Größe der Spitze von 0,18 bis 0,4 Millimeter. 1. 1P̸2p (12 Punkte wären nur "1P̸") - traditioneller Stil 2. 1p2 (12 Punkte wären nur "1p") - Format für Desktop 3. 14pt (12 Punkte wären "12pt" oder "1pc" seit es ist das gleiche wie 1 Pica) -Format, das von Cascading Style Sheets verwendet wird, die vom World Wide Web Consortium definiert werden. [3] Ein typografischer oder Druckerfuß enthält 72 Picas oder 864 Punkte. Das Metric Act von 1866 legte ein legales Verhältnis von 1200: 3937 zwischen Fuß und Meter fest. [4] Für den Vermessungsfuß, der vor 1959 verwendet wurde, war dies 0,0002% mehr als 304,8 mm, die Länge des Internationalen Fußes, der durch das Internationale Yard and Pound Agreement von 1959 festgelegt wurde.

+0

Können Sie Inhalte zur Verfügung stellen, die Sie Textview einfügen wollen? – comrade

+0

Inhalt ist privat.so ich kann es nicht öffentlich zeigen tut mir leid –

+0

jemand helfen ... –

Antwort

0

Es ist schwer zu sagen, was die Ursache Ihres Problems ohne Inhalt ist, aber es gibt einige Ratschläge, die Ihnen helfen können.

Verwenden Sie zuerst TextView mit ausreichender Größe. So etwas wie diese:

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:singleLine="false" /> 

Ich nehme an, Sie \n Symbol als Zeilenumbruch verwenden. Wenn Sie also Ihren Text hinzufügen, ersetzen Sie \n Symbole durch System.getProperty("line.separator").Etwas wie dieses:

Als Alternative können Sie SpannableString verwenden.

+0

Ich habe meinen Code bearbeitet ..Bitte sehen Sie den Inhalt @comrade –

+0

Ich habe versucht, was Sie mir raten, aber habe keine Lösung.Nun ich habe meinen Beitrag bearbeitet, so dass Sie mein Problem besser verstehen können. Danke –

0

Während der Decodierung base64data versuchen, andere Flags zu verwenden. Ich denke ist was du willst. Sie können auch andere Flaggen sehen von here

byte[] data = Base64.decode(base64data, Base64.NO_WRAP); 
+0

Ich habe alle Optionen ausprobiert. Aber keine Verwendung –

+0

Darf es eine Option in der Server-Seite auch beim Encodieren geben? – mismanc

+0

es ist Standard auf der Serverseite.So verwende ich auch Standard auf andorid Ende –

0

fand ich eine einfache, aber seltsame Antwort:

String base64data = response.getString("data"); 
       byte[] data = Base64.decode(base64data, 
         Base64.DEFAULT); 
       String decoded_text= new String(data, "UTF-8"); 
       decoded_text=decoded_text.replaceAll("[\n\r]", "WRAP"); 
       decoded_text=decoded_text.replaceAll("WRAP","\n\r"); 
       textview.setText(decoded_text); 

Dank