最近在項目中遇到了一個很奇怪的問題,将assets目錄下的json檔案讀取出來後出現亂碼,檢查項目編碼格式統一是utf-8。讀取assets的方法為
public static String getJson(Context mContext, String fileName) {
StringBuilder sb = new StringBuilder();
InputStream input = mContext.getClass().getClassLoader().getResourceAsStream("assets/" +
fileName);
try {
byte[] b = new byte[];
for (int n; (n = input.read(b)) != -; ) {
sb.append(new String(b, , n));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
sb.delete(, sb.length());
}
return sb.toString().trim();
}
網上求助後嘗試修改為如下:
public static String getJson(Context context, String fileName) {
String resultString = "";
try {
InputStream inputStream = context.getResources().getAssets().open(fileName);
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
resultString = new String(buffer, "UTF-8");
} catch (Exception e) {
// TODO: handle exception
}
return resultString;
}
應該是讀取assets時候預設轉碼的問題,指定utf-8後正常顯示。