Как сделать блокнот для сохранения текста в UTF-8 без спецификации?
У меня есть файл CSV с особыми акцентами и сохранение его в Блокноте, выбирая кодировку UTF-8. Когда я читаю файл с помощью Java, он также считывает символы спецификации.
Поэтому я хочу сохранить этот файл в формате UTF-8 без добавления спецификации в блокнот.
В противном случае есть встроенный класс в Java, который устраняет символы спецификации, которые присутствуют в начале, при чтении содержимого в файле?
Ответы
Ответ 1
-
Используйте Notepad ++ - бесплатно и намного лучше, чем Блокнот. Это поможет сохранить текст без спецификации с помощью Enconding > Encode в UTF-8 без спецификации:
![Screenshot of the Notepad++ Menubar > Encoding > Encode in UTF-8 without BOM menu in Notepad++ v6.7.9.2]()
-
Когда я столкнулся с этой проблемой в Java, я не нашел никакой библиотеки для анализа этих первых трех байтов (BOM). Поэтому мой совет:
- Используйте
PushbackInputStream(in, 3)
.
- Прочитайте первые три байта
- Если это не BOM (EF BB BF), нажмите их обратно
- Обработать поток как UTF-8
Ответ 2
Вместо этого используйте Notepad ++. См. Мой личный пост в блоге. Из Notepad ++ выберите "Кодирование", затем "Кодировать в UTF-8 без спецификации".
Ответ 3
Я только что узнал из этого Stack пост переполнения, поскольку @Martin-geisler указывает, что вы можете сохранять файлы без спецификации в Windows Notepad, выбор ANSI в качестве кодировки.
Я предполагаю, что для более продвинутых целей это не сработает, потому что полученный файл, вероятно, не является конечной кодировкой, но на самом деле ANSI; но я протестировал и подтвердил, что это работает, чтобы сохранить очень маленький .php script без спецификации, используя только Блокнот.
Я узнал длинный и трудный способ, что Блокнот Windows не является истинным редактором, хотя я хотел бы указать другим, что, несмотря на это, он вводит в заблуждение, когда вы набираете "editor" на более новых машинах Windows, по крайней мере, на одном из моих.
В настоящее время я использую Emacs и другие редакторы для решения этой проблемы.
Ответ 4
Блокнот в Windows 10 1903 и более поздних версиях поддерживает сохранение в UTF-8 без спецификации. Фактически, UTF-8 теперь является форматом файлов по умолчанию.
![Screenshot of Notepad]()
Ссылка: https://www.bleepingcomputer.com/news/microsoft/windows-10-notepad-is-getting-better-utf-8-encoding-support/
Ответ 5
Ответ: совсем нет. Блокнот не может этого сделать.
В Java вы можете просто пропустить первый байт в InputStream и сделать.
Ответ 6
Возможно, вы захотите попробовать Notepad2 или Notepad ++. У этих заметок "Блокнот" есть возможность выбрать, выводить ли спецификацию.
Что касается Java-решения, насколько я знаю, Java не понимает стандарт UTF-8. Я googled и нашел Нарушение Java UTF-8 и Unicode нарушено - используйте это исправление, которое может быть решением.
Ответ 7
Мы используем утилиту BOMStripperInputStream.java, чтобы удалить спецификацию с нашего ввода, если она есть.