2012-10-10 52 views
1

我已經閱讀了很多主題,但到目前爲止他們都沒有幫助。我試圖下載並解析包含一些UTF8字符的JSON。除了這些語法的編碼之外,一切都很好。你可以幫我嗎?Android:Http響應 - 保存到文件UTF8編碼

HttpGet request = new HttpGet(uri); 
HttpResponse resp = client.execute(request); 
entity = resp.getEntity(); 
fos = context.openFileOutput(fileSavePath, Context.MODE_PRIVATE); //fos is FileOutputStream 
entity.writeTo(fos); 
entity.consumeContent(); 
fos.flush(); 
fos.close(); 

,然後我打開該文件是這樣的:

stream = context.openFileInput(AppConfig.CATEGORIES_JSON_PATH); 
reader = new InputStreamReader(stream, StringUtils.UTF8); 

我相信GSON的東西是正確的,只有打開和保存文件的問題。我也相信這個錯誤在於entity.writeTo(fos);因爲沒有指定編碼。所以,我想writingwith字節的緩衝區和OutputStreamWriter,但隨後GSON扔MalformedJsonException:Untermineted串...

任何幫助,高度讚賞

+0

[此問題]的接受答案(http://stackoverflow.com/questions/1001540/how-to-write-a-utf-8-file-with-java)可能會有所幫助。 'openFileOutput()'不允許你指定一個編碼,但是你可以把結果的'FileOutputSteam'封裝在一個'OutputStreamWriter'中,它的構造器可以進行編碼。 – acj

+0

我在帖子末尾寫道,我已經試過了。沒有成功 –

+0

你的帖子提到使用字節緩衝區和'OutputStreamWriter',這與我的建議略有不同。你有沒有嘗試做'新的OutputStreamWriter(fos,「UTF-8」)'並寫入該對象? – acj

回答

0

的問題解決了自身。儘管在查看sqlite數據庫時,角色不正確,但在應用程序中看起來很不錯。