1
私は、SQLスクリプトを使ってファイルを読み込んでSQLite DBにデータを挿入するAndroidアプリケーションを持っています。 しかし、私はこのファイルのexatlyエンコーディングを知っている必要があります、私はSQLiteから情報を読み取るEditTextがあり、エンコーディングが正しくない場合は、 "?"のような無効な文字として表示されます「ç、í、ã」のような文字の代わりに。java ISO-8859-1とUTF-8をエンコードするファイルを区別する方法は?
I次のコードを持っている:
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn, "ISO-8859-1"));
String aDataRow;
while ((aDataRow = myReader.readLine()) != null) {
if(!aDataRow.isEmpty()){
String[] querys = aDataRow.split(";");
Collections.addAll(querysParaExecutar, querys);
}
}
myReader.close();
これは文字セットとして "ISO-8859-1" のエンコードのために働く、と私は、 "UTF-8" に設定した場合、UTF-8のために働く
。私はプログラムでcharsetエンコーディング(UTF-8またはISO-8859-1)を検出し、正しいコードをコードに適用する必要があります。 これを行う簡単な方法はありますか?
エンコードされた文字データのみから文字エンコードを判別するための確実な方法はありません。一般的な仕組みは、コンテンツとは別に指定するエンコーディングに依存するというヒューリスティックなアプローチがあります。 –
通常、エンコーディングはデータを挿入した人か、コンテンツ – sdfbhg
とは別に指定されていますが、問題は次のとおりです。私のユーザーはファイルを編集する予定です。メモ帳で編集して保存すると、 "ISO-8859-1"としてエンコードします。オリジナルのファイルエンコーディングは "UTF-8"です。 –