2016-06-29 41 views
1

我有一些內容從我的服務器以base64編碼。Textview不支持base64解碼Android

當我收到響應並嘗試解碼它時,它不會顯示內容中編碼的新行和空格。

下面的代碼正確解碼,但是當我將它設置爲textview的文本時,解碼的內容中不會顯示新的行或空格。

但是,保存在sqlite中解碼並在sqlite瀏覽器記事本中查看的內容正確顯示文本。

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

我解碼的內容是這樣的:

在排版,關鍵是措施的最小單位。它用於測量打印頁面上的字體大小,領導和其他項目。點的大小在整個印刷歷史中都有所不同。自18世紀以來,該點的大小從0.18毫米到0.4毫米不等。

  1. 1P̸2p(12分將只是 「1P」) - 傳統風格

  2. 1P2(12分將只是 「1P」) - 用於臺式機

  3. 14pt格式(12分將是由萬維網聯盟[3]

甲排版或打印機」定義層疊樣式表中使用的「12磅」或「1件」,因爲它是相同的1個PICA)格式s腳包含72點或864點。 1866年的「度量標準法」確定了腳與米之間的合法比率爲1200:3937 [4]。對於1959年以前使用的測量腳,這比304.8毫米多了0.0002%,這是1959年國際場和英鎊協議確立的國際足的長度。

而在TextView的,它顯示這樣的:

在排版,所述點是測量的最小單位。它用於測量打印頁面上的字體大小,領導和其他項目。點的大小在整個印刷歷史中都有所不同。自18世紀以來,該點的大小從0.18毫米到0.4毫米不等。 1.1P̸2p(12分將只是「1P」) - 傳統風格2. 1p2(12分將只是「1p」) - 桌面格式3. 14pt(12分將是「12pt」或「1pc」,因爲它與萬維網聯盟[3]定義的層疊樣式表使用的格式相同[3]印刷或打印機的腳包含72點或864點。 1866年的「度量標準法」確定了腳與米之間的合法比率爲1200:3937 [4]。對於1959年以前使用的測量腳,這比304.8毫米多了0.0002%,這是1959年國際場和英鎊協議確立的國際足的長度。

+0

你能提供您要插入到TextView的內容? – comrade

+0

內容是private.so我無法公開顯示它公然對不起 –

+0

任何人的幫助... –

回答

0

很難說沒有內容的問題是什麼原因,但有一些建議可以幫助你。

首先,使用足夠大小的TextView。像這樣的一個:

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

我想你使用\n符號作爲換行符。因此,當您添加文字時,請用System.getProperty("line.separator")替換\n符號。像這樣:

String text1 = new String(data, "UTF-8"); 
String string = text1.replace("\\\n", System.getProperty("line.separator")); 

作爲替代方法,您可以使用SpannableString。

+0

我編輯了我的代碼..請參閱內容@comrade –

+0

我試過你給我的建議,但沒有solution.Now我已編輯我的帖子,以便您可以更好地瞭解我的問題。謝謝 –

0

在解碼您的base64data時嘗試使用其他標誌。 我想Base64.NO_WRAP是你想要的。您還可以看到其他標誌從here

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

我試過所有的選項,但沒有使用 –

+0

它可能存在一個在服務器端的選項也編碼? – mismanc

+0

它是默認的服務器端。所以我也使用默認和andidid結尾 –

0

我發現了一個簡單的,但奇怪的答案:

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); 

感謝