APK xətaları

Java-da Excel üçün ə hərfi pozulur

FileWriter faylı sistem cədvəli ilə yazır. Azərbaycan Windows-unda bu, çox vaxt Cp1254-dür. Orada ə yoxdur, hərf ? olur.

Files.writeString UTF-8 yazır, amma əvvələ üç bayt qoymur. Excel həmin faylı yenə sistem cədvəli ilə aça bilər. ödəyici o zaman ödÉ™yici kimi görünür.

Əvvələ EF BB BF qoy. Cp1254 yazma.

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;

byte[] bom = new byte[] {(byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
byte[] metn = "ad\nAzərbaycan\n".getBytes(StandardCharsets.UTF_8);
byte[] fayl = new byte[bom.length + metn.length];
System.arraycopy(bom, 0, fayl, 0, bom.length);
System.arraycopy(metn, 0, fayl, bom.length, metn.length);
Files.write(Path.of("metn.csv"), fayl);