• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ustawienie kodowania UTF-8 podczas odczytu z pliku w aplikacji .jar

Aruba Cloud - Virtual Private Server VPS
0 głosów
1,569 wizyt
pytanie zadane 19 lutego 2017 w Java przez plkpiotr Stary wyjadacz (12,420 p.)
edycja 19 lutego 2017 przez plkpiotr

Wyeksportowałem w środowisku Eclipse Neon 2 aplikację okienkową do pliku .jar. Podczas uruchamiania projektu w IDE poprzez [CTRL+F11] aplikacja działa poprawnie, użytkownik po kliknięciu na odpowiedni przycisk wybiera plik do odczytu dzięki JFileChooser, po czym wyświetlane jest okno dialogowe, z jakiej lokalizacji plik został otwarty i następuje wykonanie pozostałych instrukcji.

Natomiast plik .jar owszem wyświetla okienko z wyborem pliku (wybieram ten sam), jednak okno dialogowe o wybranej lokalizacji nie zostaje wyświetlone i dalsze instrukcje (udostępniające inne przyciski) nie są wywoływane, tak jakby żaden plik nie został wczytany.

Proszę o pomoc we wskazaniu gdy popełniam błąd:

public void actionPerformed(ActionEvent evt) {
	JButton source = (JButton) evt.getSource();
	JFileChooser chooser = new JFileChooser(Paths.get("").toAbsolutePath().toString());
	File file = chooser.getSelectedFile();
	FileNameExtensionFilter filter = new FileNameExtensionFilter("Plik tesktowy (*.txt)", "txt");
	chooser.setFileFilter(filter);
	if (source == btnImport) {
		if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
			file = chooser.getSelectedFile();
			try {
				Scanner scanner = new Scanner(file);
				// (...) - odczytywanie z pliku tekstowego - wykonywane również w pliku .jar
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
			JOptionPane.showMessageDialog(null, "Otwarto plik: " + file.getAbsolutePath()); // nie wyświetla się w pliku .jar
			// (...) - czynności mające się wykonać po otwarciu pliku tzn. odblokowanie przycisków
		}
	}
    // (...) - dalsze operacje actionPerformed()
}

Okazuje się, że kod jest poprawny. Kiedy odczytuję plik tekstowy z pliku uruchamianego w Eclipsie program odczytuje polskie znaki, natomiast odczytywanie pliku tekstowego z pliku .jar przebiega pomyślnie tylko gdy nie ma w nim polskich znaków, w przeciwnym znaku powstaje coś takiego...

Wobec tego powstaje pytanie, w jaki sposób ustawić odczyt z pliku w kodowaniu UTF-8 jako domyślny?

1 odpowiedź

+1 głos
odpowiedź 19 lutego 2017 przez Mateusz51 Nałogowiec (28,180 p.)
wybrane 19 lutego 2017 przez plkpiotr
 
Najlepsza
Rozwiązaniem twojego problemu może być podanie jawnie kodowania w konstruktorze klasy Scanner:

http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html
komentarz 19 lutego 2017 przez plkpiotr Stary wyjadacz (12,420 p.)

Raz jeszcze bardzo dziękuję za pomoc ;)

Poprawa w konstruktorze klasy Scanner pomogła :)

Scanner scanner = new Scanner(file,"UTF-8");

Podobne pytania

0 głosów
2 odpowiedzi 630 wizyt
pytanie zadane 11 stycznia 2018 w C i C++ przez migrad Nowicjusz (170 p.)
0 głosów
1 odpowiedź 1,469 wizyt
0 głosów
1 odpowiedź 384 wizyt
pytanie zadane 18 lipca 2017 w PHP przez delarudii Nowicjusz (140 p.)

93,324 zapytań

142,323 odpowiedzi

322,389 komentarzy

62,653 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...