Dobry wieczór!
Uczę się programować w języku Java.
Obecnie trafiłem na problem, z którym nie potrafię sobie poradzić, dlatego zwracam się do Was.
Napisałem kod, który powinien:
- wygenerować tablicę pseudolosowych liczb całkowitych z zakresu od 0 do 255;
- zapisać wartości z tablicy w pliku tekstowym jako znaki w kodowaniu ISO 8859-1.
Problem polega na tym, że raz na jakiś czas zostaje utworzony plik, który zamiast znaków we wspomnianym kodowaniu zawiera znaki wyglądające jak pismo chińskie.
Wygląda to tak, jak na poniższym obrazku (po lewej efekt jaki chcę uzyskać, po prawej to czego chcę uniknąć):
Nie mam dużej wiedzy na temat programowania, więc nie ustaliłem przyczyny problemu.
Próbowałem zapisywania w kodowaniu UTF-8 oraz sprawdzałem działanie programu na systemach Windows ze stronami kodowymi CP1250 i CP1252, problem występuje.
Najczęściej uzyskuję niepoprawną zawartość plików dla tablicy zawierającej 82, 224, 288 lub 20544 znaki.
Kod programu wygląda tak:
public class WriteArrayInTxt {
public static void main(String[] args) {
int numberOfCharacters = 224;
int[] characters = new int[numberOfCharacters];
for (int i = 0; i < numberOfCharacters; i++) {
characters[i] = ThreadLocalRandom.current().nextInt(256);
} // foreach
String filePath = "D:\\Desktop\\myFile_" + numberOfCharacters + ".txt";
try {
BufferedWriter writer = Files.newBufferedWriter(Paths.get(filePath), StandardCharsets.ISO_8859_1);
for (int character : characters) {
writer.write(character);
} // foreach
writer.close();
} catch (IOException exception) {
exception.printStackTrace();
} // try-catch
}// main()
}// class WriteArrayInTxt