[英]Creating TSV file in Android: when I try to open in Excel it detects it as ANSI, I need UTF-8
[英]How can I convert a downloaded csv file (ANSI) to UTF-8 in Android
我的程序下載了一個CSV文件,將其拆分,然后用它來構建listView,但是某些字符錯誤。 我在notepad ++中檢查了CSV文件,發現字符編碼為ANSI。 如何將其轉換為UTF-8。
@Override
protected List<Teendo> doInBackground(String... params) {
try {
URL url = new URL("http://www.programozas-oktatas.hu/androidvizsga/todo.csv");
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String sor = br.readLine();
while ((sor = br.readLine()) != null) {
String [] darabok = sor.split(";");
if (darabok.length > 1) {
String megnevezes = darabok[0];
String [] datumdarabok = darabok[1].split("-");
int ev = Integer.parseInt(datumdarabok[0]);
int ho = Integer.parseInt(datumdarabok[1]);
int nap = Integer.parseInt(datumdarabok[2]);
int fontossag = Integer.parseInt(darabok[2]);
Teendo teendo = new Teendo (megnevezes,ev,ho,nap,fontossag);
teendoList.add(teendo);
}
}
} catch (MalformedURLException e) {
Log.w("DOWNLOAD", e.getMessage());
} catch (IOException e) {
Log.w("DOWNLOAD", e.getMessage());
}
return teendoList;
}
“ ANSI”是一個模糊,誤導性的術語, 應避免使用 。
在這種情況下,如果文件是匈牙利語,請使用支持以下字符的編碼:ISO-8859-2或Windows-1250-而不是ISO-8859-1。 例如,第一行包含以下任一內容:
"Határidõ" // lowercase-O with tilde, ISO-8859-1
"Határidő" // lowercase-O with double-acute, ISO-8859-2
Windows字符集具有其他可打印字符,以代替“等效” ISO字符集中的控制字符。 但是與ISO-8859-1的情況不同,Windows-1252在同一位置具有8859-1的所有可打印字符,而Windows-1250在不同位置具有一些可打印的字符。 考慮所有這些因素,理想情況下,您可以確定實際使用的編碼。 例如,如果數據使用歐元(僅在Windows-1250中使用歐元),則可以在實例化InputStreamReader
時指定:
InputStreamReader isr = new InputStreamReader(is, "Windows-1250");
告訴您的InputStreamReader使用正確的編碼:
InputStreamReader isr = new InputStreamReader(is, "ISO-8859-1");
這將導致文件被讀取為ISO-8859-1(ANSI),而不是系統默認編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.