Hej! Mam pewien problem z wykryciem kodowania plików... O ile jeśli plik tekstowy jest zapisany w UTF-8, zrobię w nim pewne zmiany, zapiszę też jako UTF-8 to nie ma problemów. Natomiast jeśli plik zapisany w stronie kodowej windows-1250 to już jest problem przy odczytaniu i zapisaniu go ponownym (w UTF-8). Przy konwersji są krzaki. Owszem, można zapisać plik wyjściowy jako windows-1250 (a więc taki sam jak plik wejściowy), ale problem pojawia się przy wykrywaniu strony kodowej pliku...
Używam takiego kodu :
public static String odczytajKodowaniePliku(String nazwaPliku)
{
String kodowanieZnakowWPliku = "";
try
{
FileInputStream fis = new FileInputStream(nazwaPliku);
InputStreamReader isr = new InputStreamReader(fis);
kodowanieZnakowWPliku = isr.getEncoding();
isr.close();
}
catch (IOException ioe)
{
JOptionPane.showMessageDialog(null, ioe.toString(), "Błąd", JOptionPane.ERROR_MESSAGE);
}
return kodowanieZnakowWPliku;
}
Być może coś jest źle... zawsze jako UTF8 dekoduje...
np kod odczytujący plik w formacie windows-1250 działa ok, tylko chodzi mi o samo wykrywanie strony kodowej :
public static void readLargerTextFile(String aFileName)
{
Path path = Paths.get(aFileName);
try
{
Scanner scanner = new Scanner(path, "windows-1250");
while (scanner.hasNextLine()){
log(scanner.nextLine());
}
}
catch (IOException ioe)
{
}
}
private static void log(Object aMsg){
System.out.println(String.valueOf(aMsg));
}