2017-06-16 52 views
1

每當我試圖使用UTF-8編碼或解碼字符串時,它會顯示未處理的異常:UnsupportedEncodingException。在android中使用UTF-8編碼字符串時使用哪種解決方案?

因此Android工作室是給我兩個解決方案,這是

1)使用拋出UnsupportedEncodingException 2)把嘗試捕捉之間的一段代碼UnsupportedEncodingException作爲捕捉參數..

那麼哪一個是好的做法,爲什麼?

public static String getEncodedString(String strOriginal) throws UnsupportedEncodingException { 
    byte[] dataFirstName = strOriginal.getBytes("UTF-8"); 
    return Base64.encodeToString(dataFirstName, Base64.DEFAULT); 
} 

OR

public static String getEncodedString(String strOriginal) { 
    byte[] dataFirstName = new byte[0]; 
    try { 
     dataFirstName = strOriginal.getBytes("UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
    return Base64.encodeToString(dataFirstName, Base64.DEFAULT); 
} 
+0

這取決於你,沒有最好的選擇。 –

+0

如果您使用第一種方式,您必須在代碼的更高級別添加try..catch。 –

回答

1

我會去的第二個片段,UTF-8是由每一個平臺的支持所以異常實際上可以永遠不會發生的標準字符編碼之一。將它進一步傳播毫無意義。

如果您是API 19開發或更新版本,您還可以使用

strOriginal.getBytes(StandardCharsets.UTF_8) 

不拋出異常。

+0

Ohh好的..謝謝一堆..還有一個查詢可以在解碼字符串之前檢查,給出的字符串是由StandardCharsets.UTF_8編碼還是不是? – nTri

+0

不,一般來說,您看不到給定字節序列使用的編碼。這是你必須知道的。 – Henry

+0

不,我是這個新手。我不知道。我認爲必須有一些類或什麼東西,我可以用它來識別字符串是否被編碼。cz在我的舊數據中沒有編碼存在,現在我必須對它進行編碼和解碼..所以每當我嘗試解碼字符串,這是不是編碼這是舊的數據,它崩潰的應用程序..所以我想弄明白..謝謝你的答覆,但:) – nTri

相關問題