Как заставить Блокнот сохранять текст в UTF-8 без спецификации? - PullRequest
25 голосов
/ 08 декабря 2011

У меня есть CSV файл со специальными акцентами и сохранение его в Блокноте, выбрав кодировку UTF-8.Когда я читаю файл с использованием Java, он также читает символы спецификации.

Поэтому я хочу сохранить этот файл в формате UTF-8, не добавляя спецификацию изначально в Блокноте.любой встроенный класс в Java, который исключает символы спецификации, которые появляются в начале, при чтении содержимого в файле?

Ответы [ 6 ]

32 голосов
/ 08 декабря 2011
  1. Использование Блокнот ++ - бесплатно и намного лучше, чем Блокнот.Это поможет сохранить текст без спецификации с помощью Enconding > Кодировать в UTF-8 без спецификации * : image Encoding > Encode in UTF-8 without BOM menu in Notepad++ v6.7.9.2">

  2. Когда я столкнулся с этимпроблема в Java, я не нашел ни одной библиотеки для анализа этих первых трех байтов (BOM).Итак, мой совет:

    • Используйте PushbackInputStream(in, 3).
    • Прочитайте первые три байта
    • Если это не спецификация ( EF BB BF )отодвиньте их назад
    • Обработайте поток как UTF-8
9 голосов
/ 08 декабря 2011

Используйте Notepad ++ вместо этого. Смотрите мой личный блог на нем. В Notepad ++ выберите меню «Кодировка», затем «Кодировать в UTF-8 без BOM».

8 голосов
/ 11 мая 2013

Я только что узнал из этого сообщения о переполнении стека , как указывает @ martin-geisler, что вы МОЖЕТЕ сохранять файлы без спецификации в Блокноте Windows, выбрав ANSI в качестве кодировки.

Я предполагаю, что для более продвинутых применений это не сработает, потому что результирующий файл, вероятно, не желаемая конечная кодировка, а фактически ANSI; но я протестировал и подтвердил, что это работает, чтобы сохранить очень маленький скрипт .php без спецификации, используя только Блокнот.

Я узнал длинный и трудный путь, которым Блокнот Windows не является настоящим редактором, хотя я хотел бы указать для других, что, несмотря на это, это вводит в заблуждение вызывается, когда вы набираете «редактор» на новых компьютерах с Windows, по крайней мере, на одном из моих.

В настоящее время я использую Emacs и другие редакторы для решения этой проблемы.

0 голосов
/ 08 декабря 2011

Мы используем утилиту BOMStripperInputStream.java , чтобы убрать спецификацию из нашего ввода, если она есть.

0 голосов
/ 08 декабря 2011

Вы можете попробовать Блокнот2 или Блокнот ++ .Эти замены Блокнота позволяют вам выбрать, выводить ли спецификацию.

Что касается решения Java, насколько я знаю, Java не понимает стандарт UTF-8.Я погуглил и обнаружил Java UTF-8 и запись в Unicode не работает - используйте это исправление , которое может быть решением.

0 голосов
/ 08 декабря 2011

Ответ: совсем нет. Блокнот не может этого сделать.

В Java вы можете просто пропустить первый байт в InputStream и все готово.

...