Android ExifInterface 圖片資訊 讀取時中文亂碼解決方案
阿新 • • 發佈:2019-02-08
對於圖片資訊的讀取,通過android本身提供ExifInterFace這個類可以實現。
對於ExifInterface這個類的TAG解釋可以檢視:https://developer.android.google.cn/reference/android/media/ExifInterface.html
本文主要講在讀區中文時出現的亂碼問題,看下面的ExifInterface部分原始碼:
讀入時編碼:
private static final Charset ASCII = Charset.forName("US-ASCII");可以看出google的支援編碼就只是”US-ASCII“。
讀出時值:
StringBuilder stringBuilder = new StringBuilder(); while (index < numberOfComponents) { int ch = bytes[index]; if (ch == 0) { break; } if (ch >= 32) { stringBuilder.append((char) ch); } else {
stringBuilder.append("?");} ++index;}return stringBuilder.toString() ;
很簡單,首先我們需要知道ExifInterface在不同的android的版本支援上面所讀寫的風格完全不同,為了能夠實現統一的支援,我們需要把原始碼給摳出來,做一些小改動,自己實現圖片資訊的讀寫。
首先將讀入時的編碼換成自己想要的編碼:如 utf-8
private static final Charset ASCII = Charset.forName("UTF-8");
其次修改讀出時的字元轉換方式:
String data = new String(bytes,"UTF-8"); return data;
OK,就是這麼簡單。
原始碼在:http://download.csdn.net/download/w1072654398/10116354