2016-06-29 3 views
1

私のサーバーからbase64でエンコードされたコンテンツがあります。Textviewはベース64のデコードをサポートしていません。

レスポンスを取得してデコードしようとすると、コンテンツに新しい行とスペースがエンコードされません。

以下のコードは正しくデコードされますが、テキストビューのテキストとして設定すると、デコードされたコンテンツに新しい行やスペースは表示されません。

しかし、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ポイントそれは1パイカと同様であるため、ワールドワイドウェブコンソーシアムによって定義されたカスケードスタイルシートで使用される-format)「12ptの」または「1個」になります[3]

活版印刷やプリンタの72フィカまたは864ポイントが含まれています。 1866年法案は、足とメートルの間に1200:3937の法的比率を設定した[4]。 1959年以前に使用された調査脚では、1959年の国際ヤード・ポンド協定で定められた国際脚の長さ304.8 mmを0.0002%上回っています。

とのTextViewには、このように表示されている:タイポグラフィで

、ポイントは、メジャーの最小単位です。これは、印刷されたページ上のフォントサイズ、リーディングその他の項目を測定するために使用されます。ポイントのサイズは、印刷の歴史を通じて変化してきました。 18世紀以来、ポイントのサイズは0.18から0.4ミリメートルまで変化しています。 1. 1P2(12ポイントはちょうど "1P"になります) - 従来のスタイル2. 1p2(12ポイントは "1p"になります) - デスクトップ用フォーマット3. 14pt(12ptは "12pt"または "1pc" World Wide Web Consortiumで定義されているカスケーディングスタイルシートで使用されている1ピーカと同じです)[3]活字体またはプリンタの足には72ピカまたは864点が含まれています。 1866年法案は、足とメートルの間に1200:3937の法的比率を設定した[4]。 1959年以前に使用された調査脚では、1959年の国際ヤード・ポンド協定で定められた国際脚の長さ304.8 mmを0.0002%上回っています。

+0

はあなたがのTextViewに挿入しようとしているコンテンツを提供することができますか? – comrade

+0

コンテンツは非公開です。公然と表示できません –

+0

誰か助けてください... –

答えて

0

あなたの問題の原因はコンテンツなしでは言い難いですが、あなたを助ける助言がいくつかあります。

まず、十分なサイズのTextViewを使用します。このような何か:

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

私はあなたが改行として\n記号を使用するとします。テキストを追加するときは、\nシンボルをSystem.getProperty("line.separator")に置き換えてください。このようなもの:

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

代わりに、SpannableStringを使用できます。

+0

私のコードを編集しました。コンテンツをご覧ください。@comrade –

+0

私はあなたが私にアドバイスしたことを試しましたが、解決策はありませんでした。 –

0

base64data他のフラグを使用しようとしています。 私はBase64.NO_WRAPがあなたの望みだと思います。あなたはまた、私はシンプルだが、奇妙な答えを見つけhere

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

私はすべてのオプションを試しましたが使用しません –

+0

エンコーディング中にサーバー側にオプションが存在する可能性がありますか? – mismanc

+0

これはサーバー側のデフォルトです。私もandoridエンドのデフォルトを使用しています –

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

おかげ

関連する問題