Ошибки APK

В Java буква ə портится для Excel

FileWriter пишет файл системной таблицей. На азербайджанском Windows это часто Cp1254. Буквы ə там нет, и она становится ?.

Files.writeString пишет UTF-8, но не ставит три байта в начало. Excel всё равно может открыть тот файл системной таблицей. Тогда ödəyici выглядит как ödÉ™yici.

Поставь в начало EF BB BF. Не пиши Cp1254.

  • Пиши CSV с тремя байтами выше. Тогда Excel видит ə.
  • Не пиши new FileWriter("metn.csv"). Он сам выбирает таблицу, и ə теряется.
  • Cp1254 и windows-1254 букву не хранят. Не выбирай таблицу кроме UTF-8.
  • Files.writeString не ставит BOM. Для браузера хватает, для Excel нет.
  • Если буква в файле уже ?, Java её не вернёт. Напиши текст заново.
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);

Похожие руководства