Как сменить кодировку файла на utf 8 java

Обновлено: 07.07.2024

Я попытался использовать java.io.FileReader для чтения некоторых текстовых файлов и преобразования их в строку, но я обнаружил, что результат неверен и не читается вообще.

Здесь моя среда:

Windows 2003, кодировка ОС: CP1252

Мои файлы кодируются в кодировке UTF-8 или CP1252, а некоторые из них (кодированные файлы UTF-8) могут содержать китайские (нелатинские) символы.

Я использую следующий код для выполнения своей работы:

Приведенный выше код не работает. Я обнаружил, что кодировка FileReader - это CP1252, даже если текст кодируется UTF-8. Но JavaDoc java.io.FileReader говорит, что:

Конструкторы этого класса предполагают что кодировка символов по умолчанию и размер байтового байта по умолчанию равен необходимо.

ОТВЕТЫ

Ответ 1

Да, вам нужно указать кодировку файла, который вы хотите прочитать.

Да, это означает, что вам нужно знать кодировку файла, который вы хотите прочитать.

Нет, нет общего способа угадать кодировку любого данного файла "обычного текста".

Конструкторы FileReader всегда используют стандартную кодировку платформы, которая, как правило, плохая идея.

Ответ 2

FileReader использует кодировку по умолчанию для платформы Java, которая зависит от системных настроек компьютера, на котором он работает, и, как правило, является самой популярной кодировкой среди пользователей в этой локали.

Если это "лучшее предположение" неверно, вам нужно явно указать кодировку. К сожалению, FileReader не позволяет этого (большой надзор в API). Вместо этого вы должны использовать new InputStreamReader(new FileInputStream(filePath), encoding) и в идеале получить кодировку из метаданных о файле.

Ответ 3

Начиная с Java 11 вы можете использовать это:

Ответ 4

Для Java 7+ doc вы можете использовать это:

Вот все документы Charsets

Например, если ваш файл в CP1252, используйте этот метод

Вот другие канонические имена для кодировок Java и для IO и для документа NIO

Если вы не знаете, с точно кодирующим у вас есть в файл, вы можете использовать некоторый сторонний LIBS как этот инструмент от Google это, который работает довольно аккуратно.

Ответ 5

Для других латинских языков, например, кириллицы, вы можете использовать что-то вроде этого:

и убедитесь, что ваш файл .txt сохранен в формате UTF-8 (но не по умолчанию ANSI ). Ура!

Ответ 6

FileInputStream с InputStreamReader лучше, чем напрямую использовать FileReader, поскольку последний не позволяет указывать кодировку charset.

Вот пример использования BufferedReader, FileInputStream и InputStreamReader вместе, чтобы вы могли читать строки из файла.


содержание 1, основная функция MPI 2, точка-точка функция связи 3, коллективная функция связи 1, основная функция MPI MPI_Init(&argc, &argv) Информировать системы MPI для выполнения всех необх.

Примечание 9: EL выражение


JVM память

концепция Виртуальная машина JVM управляет собственной памятью, которая разделяет память во многие блоки, наиболее распространенной для памяти стека и памяти кучи. 1 структура виртуальной машины JVM H.

Проблема сетевого запроса на Android 9.0

вЗапустите Android 9 (API Уровень 28) или вышеНа устройстве операционной системы Android, чтобы обеспечить безопасность пользовательских данных и устройств, использование по умолчанию для зашифрованно.


Учебная запись по Webpack (3) В статье рассказывается о создании webpack4.0.

предисловие Для изучения веб-пакета автор также предпринял много обходных путей. Есть много вещей, которые я хочу знать, но я не могу их найти. Автор поможет вам быстро начать работу. Цель этой статьи.

Вам также может понравиться

Сетевой HDU - 3078 мультивикация LCA

The ALPC company is now working on his own network system, which is connecting all N ALPC department. To economize on spending, the backbone network has only one router for each department, and N-1 op.

Деревянная палочка Luogu P1120 [Data Enhanced Version] Поиск

Метафизический разрез, просто просмотрите поиск Я чувствую, что процедура поиска состоит в том, чтобы сначала набрать общую структуру, а затем шаг за шагом оптимизировать процесс сокращения. 1. Длина .

Используйте Maven для запуска модульных тестов

Используйте Maven для запуска модульных тестов Чтобы запустить модульные тесты через Maven, введите эту команду: Это запустит весь модульный тест в вашем проекте. Тематическое исследование Создайте дв.


С кодировками в java плохо. Т.е., наоборот, все идеально хорошо: внутреннее представление строк – Utf16-BE (и поддержка Unicode была с самых первых дней). Все возможные функции умеют преобразовывать строку из маленького регистра в большой, проверять является ли данный символ буквой или цифрой, выполнять поиск в строке (в том числе с регулярными выражениями) и прочее и прочее. Для этих операций не нужно использовать какие-то посторонние библиотеки вроде привычных для php mbstring или iconv. Как говорится, поддержка многоязычных тестов “есть в коробке”. Так откуда берутся проблемы? Проблемы возникают, как только строки текста пытаются “выбраться” из jvm (операции вывода текста различным потребителям) или наоборот пытаются в эту самую jvm “залезть” (операция чтения данных от некоторого поставщика).

Сказка про капиталистов

Надо сказать, что unicode это не статическое образование, не принятый еще при царе горохе стандарт, который с тех пор безуспешно пытаются реализовать производители различных продуктов. Это динамический, постоянно развивающийся стандарт, с множество версий и соответствующих спецификаций. Полагаю, с тем, что для хранения текста написанного на различных языках (а для азиатов хватит и одного их родного языка) размера символа в один байт совершенно не достаточно, согласны все. Нет, чтобы взять и прикинуть, сколько там всего языков на всей планете, сколько в их алфавитах символов, сколько разных значков (нотных, графических) может потребоваться на ближайшие 100 лет. Взяли, прикинули: 1 байт – смешно, 2 уже лучше, но все равно маловато, 3 байта (примерно 16 миллионов символов уже хорошо), а если взять для представления символа все 4 байта (4 миллиарда с гаком) – то просто замечательно. Приняли бы такое решение, потом бы издали указ: мол, так и так с первого числа сего месяца начинается новые и улучшенные компьютерные времена, переделали бы все заводы по производству компьютеров, вызывали Била Гейтса на партсобрание, дали бы ценное указание и жизнь стала бы гораздо лучше. Увы, в этом жестком капиталистическом мире, на всей планете найдется всего несколько человек, которые согласятся ради возможности решить раз и навсегда все проблемы на то, чтобы объем их винчестеров и оперативной памяти уменьшится сразу в четыре раза (во сколько раз уменьшится производительность вычислений сказать тяжело – но все равно очень неслабо). Да, еще достижение всеобщего блага привело бы к полной потере всего ранее написанного софта, документов и т.д. Увы капитализм не захотел устроить всемирный субботник, а нам наследникам красного октября приходится это расхлебывать. Конечно, это шутка. Но во всякой шутке, как известно, есть доля шутки. Первая версия Unicode представляла собой кодировку, в которой каждый символ кодировался 2 байтами, для некоторых символов (наиболее часто используемых, а не всех возможных) были выделены определенные области (интервалы). Потом, с течением времени решили, что все же 64 тысяч символов будет маловато и необходим механизм хранения их большего числа. Кроме того, разработчики стандарта поняли, что в разных странах разное понятие о “букве” и все стало еще сложнее. В принципе все это написано на wikipedia, так что прекращаю рассказывать сказки, и перехожу к java, точнее к проблемам связанным с кодировками в java.

Типовые проблемы с которыми сталкиваются java-разработчики

Т.к. java приложения взаимодействуют с различными подсистемами, то и возникающие проблемы бывают разными. Хотя все, в общем случае, сводится к одной из двух проблем:

Проблема 1. Данные были успешно прочитаны, но на стадии отображения не нашлись нужные шрифты. В этом случае отсутствующие картинки шрифта заменяются на квадратики. Лечится проблема путем установки нужных шрифтов (например, при установке windows вас обычно спрашивают, хотите ли вы добавить поддержку шрифтов для азиатских языков). Есть два вида шрифтов: физические и логические. Физические шрифты – это те шрифты, файлы которых установлены либо в папку там_где_ваша_jre/lib/fonts, либо те шрифты которые установлены в стандартное место для вашей операционной системы (все версии jre обязаны поддерживать шрифты TrueType, остальные же форматы - необязательно). Логические шрифты (например, Serif, Sans-Serif, Monospaced, Dialog и DialogInput) – это правила отображения некоторых имен на реальные физические шрифты. Например, для windows логический шрифт serif это ссылка на физический times new roman. Задаются эти правила в файлах fontconfig.properties.src, fontconfig.98.properties.src, fontconfig.Me.properties.src. Для swing приложений, мы можем не только работать с идущими в самой операционной системе шрифтами, но и носить файл шрифта вместе со своим приложением, так чтобы полностью не зависеть от того, где оно будет запущено. В составе класса java.awt.GraphicsEnvironment есть несколько методов позволяющих получить информацию о том, какие шрифты доступны на вашем компьютере.

public Font [] getAllFonts ()
public abstract String [] getAvailableFontFamilyNames ()

Надо сказать, что в качестве параметра второму методу можно передать в качестве параметра объект Locale (сведения о географическом местоположении страницы, ее языке, денежных единицах …). В этом случае будут возвращены шрифты, локализованные для именно этого языка. Если же никакого параметра при вызове не указать, то вы получите список шрифтов привязанных к текущей (по-умолчанию) локали.

Для того, чтобы создать шрифт на основании некоторого файла ttf, необходимо вызвать статический метод createFont из класса Font. В качестве параметров для него следует указать файл, который содержит определение шрифта, а также указать тип этого файла (Font.TRUETYPE_FONT или Font.TYPE1_FONT). Созданный объект шрифта можно “настроить” указав для него размер или стиль (plain, italic, bold). Используйте для этого метод deriveFont.

Изображение:font_1_1.jpg

JPanel pa = new JPanel ( new GridLayout ( 0 , 1 )) ;

pa.add ( lab_1 ) ;
pa.add ( lab_2 ) ;
pa.add ( lab_3 ) ;
pa.add ( lab_4 ) ;


jf.setContentPane ( pa ) ;
jf.pack () ;

Теперь вернемся к русским буквам и java.

Вторая наиболее часто встречающаяся проблема - это неправильное преобразование кодировки. Например, вы хотите прочитать текстовый файл в кодировке windows-1251. Но при создании объекта InputStreamReader вы указали неверную кодировку (или положились на значение по-умолчанию).

В результате при чтении файла символы будут рассматриваться как принадлежащие определенной кодовой странице. Но вовсе не факт что некоторый код символа корректный для кодировки A будет также корректен для кодировки B. В случае корректности кодов, мы увидим то, что некоторые из символов были заменены на какие-то другие символы. А вот, если код является некорректным (например, зарезервирован на будущее), то такой символ будет заменен на знак “?”.

Для получения списка всех доступных кодировок вы можете использовать следующий код (вызов статического метода Charset.availableCharsets):

SortedMap<String, Charset> charsetsMap = Charset.availableCharsets () ;
final JList list = new JList ( charsetsMap.keySet () .toArray ()) ;
final JScrollPane pane = new JScrollPane ( list ) ;
jf.getContentPane () .add ( pane ) ;
jf.pack () ;

Здесь “utf-8” правильная кодировка, а “windows-1251” – неправильная.

Но предупреждаю сразу – это плохой, очень плохой способ “починить примус”. Помните, что в ходе преобразований возможна потеря символов (из-за несовместимых кодировок). Так что если вы прочитали данные из файла в неверной кодировке, то отсутствующие символы были заменены на значки вопросов. Следовательно попытка восстановить оригинальный массив байтов будет безуспешной.

Java и web.

Web – это то самое место где сталкиваются множество людей работающих под разными версиями операционных систем использующие разные браузеры и написанный нами сайт должен работать всегда и везде.

Самая идеальная ситуация - когда отправка идет с помощью метода POST. В этом случае браузер кодирует данные в такой же кодировке, как и в той, что была сформирована веб-страница. За кодировку возвращаемых данных отвечают либо указанная вверху jsp-файла директива:

Первая из этих опций (contentType) указывает на кодировку выходного документа, а вторая (pageEncoding) на кодировку собственно файла в котором находится код jsp-страницы.

Либо, если вы создаете сервлет, то первым шагом нужно указать выходную кодировку документа:

Классно, значит, если мы сформировали страницу в кодировке utf-8, то данные из формы придут к нам в формате “utf-8”. Классно, то классно, но кто сказал, что ваш веб-сервер правильно эти данные сможет раскодировать? Теоретически, когда браузер делает запрос к серверу, то отправляется не только сведения о том какой документ хочет видеть клиент, не только данные из формы, но и сведения об браузере, об поддерживаемых кодировках, об предпочитаемых языках документа, и прочее и прочее и прочее. Может там найдется сведения о кодировке? Давайте проверим. При создании тега form вы должны указать значение не только метода отправки (GET или POST), но и значение атрибута enctype. Его возможные значения: "multipart/form-data" или "application/x-www-form-urlencoded". В первом случае форма будет способна отправлять не только текстовые данные, но и, например, файлы (кто бы мне сказал, почему sun-овцы не могли реализовать парсинг подобного запроса самостоятельно или внести в стандарт для любого servlet-контейнера, а отдали на откуп посторонним?). Рассмотрим как кодируются данные в случае "multipart/form-data"? Ниже пример подобного запроса:

Как видите, запрос разбит на секции с помощью некоторой уникальной комбинации символов. Итак, где в этом запросе есть указание на то, в какой кодировке пришли данные от браузера? Нигде, нет их. Может быть, кодировка указывается при запросе "application/x-www-form-urlencoded"? Ладно, вот пример еще одного запроса:

Способ кодирования информации отличен: прежде всего, заметьте, как были переданы русские буквы. В первом случае они передаются как есть, т.е. в той кодировке в которой была сформирована и сама страница. Во втором случае буквы превратились во множество значков процента, цифр и букв. Кодировка "application/x-www-form-urlencoded" применяется также и в случае отправки данных методом GET (передается в адресной строке).

То, в зависимости от используемой кодировки, данные будут отправлены либо так:

%FF%F9%E8%EA%E8_%F1_%EF%E8%E2%EE%EC - так выглядит слово “ящики с пивом” в кодировке windows-1251

%D1%8F%D1%89%D0%B8%D0%BA%D0%B8_%D1%81_%D0%BF%D0%B8%D0%B2%D0%BE%D0%BC – а так выглядит это слово в кодировке utf-8.

Возвращаясь к анализу двух примеров запроса данных, мы нигде не видим указания на то какая кодировка используется для отправки данных. Может, у меня не правильный браузер, и какие то другие, правильные, браузеры указывают кодировку отправляемых данных? Увы, ни internet explorer 6,7 ни firefox 2,3 ни opera 9.5 не указывают сведений о кодировке.

Автоматически определить кодировку tomcat не может, а раз не может, то будет выполнять преобразование поступивших данных из кодировки (по-умолчанию) ISO8859-1. Несколько раз мне встречались в сети рекомендации делать что-то вроде:

Когда вызывается ваш сервлет (или jsp, что суть одно и то же). То вы можете узнать в какой кодировке к вам пришли данные, например, так:

Если значение кодировки null (а оно равно этой величине почти всегда), тогда tomcat решает, что входные данные были в формате ISO8859-1 и пытается именно так выполнить парсинг строки. Существует народное поверье, что если создать специальный сервлет-фильтр, который будет вызываться до того, как будет выполнено первое обращение к списку передаваемых параметров и установит значение правильной кодировки, то все заработает без проблем, например:

Теперь при первом же обращении к какому-либо из входных параметров:

Равно как и для jstl:

Будет выполнено раскодирование входных данных с учетом указанной вами кодировки.

Наверное, форсировать установку значения для кодировки не всегда правильно. С другой стороны, если ваше веб-приложение содержит страницы, формируемые в разных кодировках (непонятно, правда, зачем вам это понадобилось), то можно тонко настроить шаблон для тех адресов jsp-страниц, которые будут обслуживаться этим фильтром:

Можно обойтись и меньшей кровью, выполнив эту команду внутри вашего сервлета самой первой строкой кода (нужно только быть уверенным в том, что никакой другой код не пытался получить значения переменных до вас):

Или, если вы создаете jsp-файл с использованием jstl-тегов, то такую команду:

Однако для того, чтобы указанное значение кодировки было применено к параметрам переданным методом GET (применительно к tomcat) нужно выполнить правку конфигурационного файла server.xml и добавить для элемента Connector атpибут useBodyEncodingForURI равный значению “true”. В этом случае разбор параметров будет выполнен с такой кодировкой, которую вы установили с помощью вызова request.setCharacterEncoding("utf-8").

URIEncoding This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.
useBodyEncodingForURI This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitely set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false.

Проще говоря, либо вы указывате явно значение кодировки для всех входных запросов с помощью параметра URIEncoding (а-га, вот как будто бы всегда и для всех приложений на этом хостинге только такая кодировка является допустимой). Либо устанавливаете вторую перменную |useBodyEncodingForURI равной значению true (по-умолчанию ее значение false).

Единственная проблема в том, что мы выполнять правку файла server.xml мы можем лишь, в случае если имеем прямой доступ к каталогу, где установлен tomcat. Согласитесь, что в случае типового виртуального хостинга мы можем управлять приложением только с помощью файлов web.xml и еще META-INF/context.xml – а это не то. Также, если ваше приложение запущено под другим веб-сервером, то вам нужно будет разбираться с его специфическим настройками.

Некоторое время назад я пытался разобраться с настройками для resin. В FAQ написано, что на разбор данных оказывают влияние следующие значения:

Тег character-encoding, может быть дочерним по отношению к следующим уровням настройки: resin, server, host-default, host, web-app-default, web-app (на уровне приложения, а значит мы можем настроить свое приложение даже на самом обычном виртуальном хостинге).

Обратите внимание на схему, которая регламентирует содержимое web.xml в следующем примере (традиционная )

То такой пример не будет работать: т.к. тег character-encoding является специфическим именно для resin.

Если же значение кодировки явно не указано, то для чтения данных используется кодировка по-умолчанию для jvm (file.encoding). К сожалению, мои попытки запустить resin с указанием входной кодировки ничем хорошим не закончились (после установки значения кодировки в web.xml переданные рускоязычные символы превращались в черт его знает что). Так что пришлось обходиться привычным request.setCharacterEncoding ('utf-8'); Тогда у меня было мало времени разбираться в особенностях поведения resin, также я не исключаю что это был хитрый баг, так что если у кого-то есть заметки по этому поводу, то прошу поделиться с общественностью.

Как вывод: если данные передаются методом POST, то проблем нет. Если методом GET то проблемы есть; и особенно большие проблемы в случае, если кодировки для метода GET и POST отличаются друг от друга, или некоторые GET запросы приходят в одной кодировке, а некоторые – в другой. Думаете, такого не может быть? Может. Ситуация была такова: есть сайт в кодировке utf-8 на его страницах находится множество ссылок ссылающихся на разделы этого же сайта, и, внимание, в тексте ссылок содержались русскоязычные названии (как некое подобие wikipedia). Если человек жмет на такую ссылку то адресная строка перед кодированием ее с помощью x-www-form-urlencoded, подвергалась кодированию в utf-8 (кодировку страницы). Однако если такую ссылку вводили в адресную строку браузера руками, то кодировка была windows-1251 (это для русскоязычной windows). Для linux машины, на которой стояла fedora, кодировка была utf-8. как решили проблему? Как обычно: матюгами и напильником.

Как правильно настроить кодировку по умолчанию, используемую программным обеспечением JVM (1.5.x)?

Я читал, что -Dfile.encoding=whatever был тем, как идти на старшие JVM. У меня нет такой роскоши по причинам, по которым я не попаду.

И свойство получает значение, но, по-видимому, он не вызывает окончательный вызов getBytes ниже для использования UTF8:

ОТВЕТЫ

Ответ 1

К сожалению, свойство file.encoding должно указываться при запуске JVM; к моменту ввода вашего основного метода кодировка символов, используемая String.getBytes() и конструкторы по умолчанию InputStreamReader и OutputStreamWriter , была постоянно кэширована.

Как Эдуард Греч указывает, в специальном случае, подобном этому, переменную окружения JAVA_TOOL_OPTIONS можно использовать для указания этого свойства, но обычно это делается так

Charset.defaultCharset() будет отражать изменения в свойстве file.encoding , но большая часть кода в основных библиотеках Java, которые должны определять кодировку по умолчанию, не использует этот механизм.

Когда вы кодируете или декодируете, вы можете запросить свойство file.encoding или Charset.defaultCharset() , чтобы найти текущую кодировку по умолчанию, и использовать соответствующий метод или перегрузку конструктора, чтобы указать его.

Ответ 2

Поскольку в командной строке не всегда можно получить доступ или изменить, например, во встроенных виртуальных машинах или просто виртуальных машинах, запущенных глубоко внутри скриптов, предоставляется переменная JAVA_TOOL_OPTIONS , позволяющая запускать агентов в этих случаях.

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8

Ответ 3

У меня есть хакерский способ, который определенно работает!

Таким образом вы собираетесь обмануть JVM, который думал бы, что набор символов не установлен и заставит его снова установить его на UTF-8 во время выполнения!

Ответ 4

Я думаю, что лучший подход, чем установка набора символов по умолчанию для платформы, особенно, поскольку у вас, похоже, есть ограничения на влияние на развертывание приложения, не говоря уже о платформе, можно назвать гораздо безопаснее String.getBytes("charsetName") . Таким образом, ваше приложение не зависит от того, что находится вне его контроля.

Я лично считаю, что String.getBytes() должен быть устаревшим, поскольку он вызвал серьезные проблемы в ряде случаев, которые я видел, когда разработчик не учитывал кодировку по умолчанию, возможно, меняющуюся.

Ответ 5

Я не могу ответить на ваш первоначальный вопрос, но я хотел бы предложить вам несколько советов - не зависит от кодировки JVM по умолчанию. Всегда лучше явно указать желаемое кодирование (т.е. "UTF-8" ) в вашем коде. Таким образом, вы знаете, что он будет работать даже в разных системах и конфигурациях JVM.

Ответ 6

Ответ 7

У нас были те же проблемы. Мы методично попробовали несколько предложений из этой статьи (и других) безрезультатно. Мы также попытались добавить -Dfile.encoding=UTF8 но ничего не -Dfile.encoding=UTF8 .

Для людей, которые имеют эту проблему, следующая статья, наконец, помогла нам отследить, описывает, как настройка локали может сломать unicode/UTF-8 в Java/Tomcat

Правильная настройка локали в файле

/.bashrc сработала у нас.

Ответ 8

Если вы используете Spring Boot и хотите передать аргумент file.encoding в JVM, вы должны запустить его следующим образом:

это было необходимо для нас, поскольку мы использовали шаблоны JTwig , а операционная система имела ANSI_X3.4-1968 , которую мы обнаружили через System.out.println(System.getProperty("file.encoding"));

Надеюсь, это поможет кому-то!

Ответ 9

Я пробовал много вещей, но образец кода здесь работает отлично. Ссылка

Ответ 10

Не понятно, что вы делаете и не контролируете на этом этапе. Если вы можете вставить другой файл OutputStream в файл назначения, вы можете использовать подтип OutputStream, который преобразует строки в байты под кодировкой, которую вы определяете, например, по умолчанию UTF-8. Если модифицированный UTF-8 является достаточным для ваших нужд, вы можете использовать DataOutputStream.writeUTF(String) :

Если этот подход невозможен, это может помочь, если вы четко разъясните, что именно вы можете и не можете контролировать с точки зрения потока данных и среды выполнения (хотя я знаю, что иногда проще сказать, чем определено). Удачи.

Ответ 11

работала с exec-maven-plugin для устранения следующей ошибки при настройке задачи jenkins.

Ответ 12

Мы установили вместе два системных свойства, и это заставляет систему принимать все в utf8

Ответ 13

"измените локаль базовой платформы перед запуском вашей Java-программы."

Для докера смотрите:

Ответ 14

Недавно я столкнулся с локальной системой Notes 6.5 и выяснил, что веб-почта будет отображать неидентифицируемые символы на локальной установке Windows, отличной от Zhongwen. Вырыли в течение нескольких недель в Интернете, выяснили это всего несколько минут назад:

В свойствах Java добавьте следующую строку в параметры времени выполнения

В этом случае настройка UTF-8 не будет работать.

Ответ 15

Я использую Amazon (AWS) Elastic Beanstalk и успешно сменил его на UTF-8.

В эластичном бобовом стебле перейдите в "Конфигурация > Программное обеспечение", "Свойства среды". Добавить (имя) JAVA_TOOL_OPTIONS с (значением) -Dfile.encoding = UTF8

После сохранения среда перезапустится с кодировкой UTF-8.

Ответ 16

Моя команда столкнулась с той же проблемой на компьютерах с Windows.. затем удалось решить ее двумя способами:

Читайте также: