Ответ 1
Обрежьте спецификацию, а затем используйте javac -encoding utf8 x.java
Привет, спасибо за чтение моего сообщения.
Моя проблема заключается в следующем: я хочу скомпилировать исходный файл Java с "javac" с этим файлом, который кодируется UTF-8 с помощью спецификации (ОС - WinXP).
Ниже я что делаю:
1) Создайте файл с "Блокнотом" и выберите кодировку UTF-8
dos> notepad Test.java
"File -> Save as..."
File name : Test.java
Save as type: All Files
Encoding : UTF-8
Save
2) Создайте Java-класс в этом файле и сохраните файл, как в 1)
public class Test
{
public static void main(String [] args)
{
System.out.println("This is a test.");
}
}
3) Визуализируйте шестнадцатеричную версию файла (первая строка)
dos> xxd Test.java | head -1
0000000: efbb bf70 7562 6c69 6320 636c 6173 7320 ...public class
Примечание: ef bb bf - это кодированная UTF-8 спецификация (кодированная спецификация UTF-16 BOM FE FF).
4) Попробуйте скомпилировать этот код с помощью "javac"
dos> javac -encoding utf8 Test.java
Test.java:1: illegal character: \65279
?public class Test
^
1 error
Примечание. 65279 - это десятичная версия спецификации.
Мой вопрос следующий: как я могу сделать эту компиляцию с помощью:
Спасибо за помощь и наилучшие пожелания.
Леа
Обрежьте спецификацию, а затем используйте javac -encoding utf8 x.java
Это не проблема с вашим текстовым редактором, это проблема с javac! Спецификация Unicode говорит, что спецификация в UTF-8 полезна, она не говорит, что это запрещено! Если спецификация может быть там, то javac HAS для ее обработки, но это не так. Фактически, использование спецификации в файлах UTF-8 полезно для того, чтобы отличать ANSI-кодированный файл от кодированного в Юникоде файла.
Предлагаемое решение об удалении спецификации является лишь обходным решением, а не правильным решением.
Этот отчет об ошибке указывает, что эта "проблема" никогда не будет исправлена: http://bugs.java.com/view_bug.do?bug_id=4508058
Поскольку этот поток находится в двух лучших результатах Google для поиска "javac BOM", я оставляю это здесь для будущих читателей.