Properties problem z wczytywaniem kluczy z polskimi znakami

0

Witam,
Wczytuję wartości z kluczy z pliku z rozszerzeniem properties w taki sposób:

	{
	Properties properties = new Properties();
    FileInputStream in = new FileInputStream("my.properites");
	properties.load(in);
    String nazwaGry = properties.getProperty("nazwaGry");
    String liczbaPoziomów = properties.getProperty("liczbaPoziomów=4");
    String nazwaBazowaPlikuZOpisemPoziomu = properties.getProperty("nazwaBazowaPlikuZOpisemPoziomu");
    String numeracjaPoziomówZaczynaSięOd = properties.getProperty("numeracjaPoziomówZaczynaSięOd");
    String rozszerzeniePlikuZOpisemPoziomu = properties.getProperty("rozszerzeniePlikuZOpisemPoziomu");
    String liczbaStopniTrudności = properties.getProperty("liczbaStopniTrudności");
    String zmianaStopniaTrudności = properties.getProperty("zmianaStopniaTrudności");
    String początkowaSzerokośćPlanszy = properties.getProperty("początkowaSzerokośćPlanszy");
    String początkowaWysokośćPlanszy = properties.getProperty("początkowaWysokośćPlanszy");
    String początkowaSzerokośćObiektuGryJakoProcentPoczątkowejSzerokościPlanszy = properties.getProperty("początkowaSzerokośćObiektuGryJakoProcentPoczątkowejSzerokościPlanszy");
    String tło = properties.getProperty("tło");
	String klorTła = properties.getProperty("klorTła");
    String obiektyGry = properties.getProperty("obiektyGry");
    String plikObiektu = properties.getProperty("plikObiektu");
	System.out.println(klorTła);
	}

Gdy chcę odczytać wartość zmiennej np. liczbaStopniTrudności, klorTła to zwracany jest null
Gdy odczytuję wartość zmiennej np. nazwaGry, liczbaPoziomów to wszystko jest w porządku
Zauważyłem że null jest przy kluczach, gdy w ich nazwach jest np. litera ł lub ś
Co zrobić żeby nie zwracało null przy tych kluczach?

0

Poza polskimi znakami w zmiennych popraw jeszcze to:

String liczbaPoziomów = properties.getProperty("liczbaPoziomów=4");

Jako klucz wpisujesz tylko to co jest po lewej stronie znaku =.

Dodatkowo upewnij się czy po stworzeniu inputStreama oraz załadowaniu tego do propertisów wszystko jest prawidłowo. (debugger)

3
Antoni Winnicki napisał(a):

Co zrobić żeby nie zwracało null przy tych kluczach?

Nie używac polskich znaków w properties.

Do Javy 8 włącznie - pliki properties mogły być kodowane tylko w ISO-8859-1, przy czym były wspierane znaczniki \uABCD na znaki spoza tego znaku. (Wygląda to debilnie).
https://en.wikipedia.org/wiki/.properties
Od javy 9 możesz pliki properties zapisać w UTF-8. Czyli upewnij się co do wersji Javy, a potem sprawdź jak kodujesz plik properties.

Przy okazji problem dotyczy nie tylko klucza, ale i wartości.

Do javy 8 na pewno był też tool native2ascii który robił escapowanie znaków spoza ISO-8859-1.

Co do komentarzy powyżej. Pisanie po polsku w javie wygląda może koślawo, ale jak ktoś już to robi, to jak najbardziej może w kodzie używać polskich znaków, ruskich też. Dotyczy to nazw zmiennych, nazw klas, metod, itd.

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