Zmiana strony kodowania przy cztaniu pliku

0

Koledzy mam mały problem muszę zrobić coś takiego. Wczytuje plik np. Phonebook.dat w którym informacje są przechowywane w postaci tekstu o kodowaniu UTF-8 i wybrać interesujące mnie informacje z niego i zapisać w postać HTMLa. Fragment programu wczytywania w załączonym pliku.

public class czytanieTel {
public static void main(String[] args) {
File plik = new File("C:/Phonebook.dat"); // lokalizacja pliku
BufferedReader buf = null; // definiowanie bufora odczytu
String nazwisko_imie = "";
String telDomowy = "";
String telKomorkowy = "";
String telSluzbowy = "";
boolean koniec;
try {
buf = new BufferedReader(new FileReader(plik));
String[] info = null;
info = buf.readLine().split(" "); // czytanie 1-linija

		while (info[0] != "quit") {
			// tu przeprowadzam filtracje danych
			// mnie interesujšcych
			try {
				info = buf.readLine().split(" "); // czytanie 1-linija
			} catch (NullPointerException e) {
				info[0] = "quit";
			}
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
}

}

I tu powstaje problem buf.readLine().split(" ") czyta mi wszystko jako ASCII i tu nie byłoby żadnego problemu bo zmieniłbym kodowanie w raporcie HTML na UTF-8 ale niestety przy wczytywaniu są momenty kiedy buf.readLine().split(" ") źle mi odczyta tekst UTF-8 i źle zamieni go na ASCII. Czym to może być spowodowane i jak to mogę obejść? Dziwne jest to że źle odczytana jest tylko część. Będę wdzięczny za wszystkie sugestie i każdą pomoc jestem laikiem jeżeli chodzi o jave.

Dodam jeszcze przykład:
Tak jest zapisana informacja w pliku-> N;CHARSET=UTF-8:Łukasiak;Jasiek
Tak wygląda po konwertowaniu na ASCII w notatniku-> N;CHARSET=UTF-8:Ĺukasiak;Jasiek
A tak wygląda po odczytaniu przez buf.readLine().split(" ") -> N;CHARSET=UTF-8:Ĺ?ukasiak;Jasiek

0

sproboj zamiast filereader uzyc FileInputStream, i DataInputStream

1

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("plik.dat"), "UTF-8"));

Cos takiego.

0

Dzięki Koledzy za pomoc :-) otrzymałem efekt jaki potrzebowałem.

0

Mi ten sposób też pomógł z jednym "ale":

Na początku odczytanego Stringa zawsze dodaje znak "?" mimo iż na początku pliku tego nie ma. Skąd się to bierze?

String lancuch = "";
	
             try
	     {
			BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("plik.txt"), "UTF-8"));
	                String linia="";
	        
	        
	                while ( (linia = in.readLine()) != null )
	                {
	         	     lancuch += linia+"\n";
	                }
	        
	               in.close();
	            
	    }
	    catch (IOException e)
	    {
		     e.printStackTrace();
	    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1