Привет и благодарю вас за чтение моего сообщения.Компиляция (javac) кодированный исходный код Java UTF8 с спецификацией
Моя проблема заключается в следующем: я хочу скомпилировать исходный 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
Примечание: эф бб Б.Ф. является UTF-8, закодированный BOM (The UTF-16 в кодировке ВОМ быть FE FF).
4) Попробуйте скомпилировать этот код с "JAVAC"
dos> javac -encoding utf8 Test.java
Test.java:1: illegal character: \65279
?public class Test
^
1 error
Примечание: десятичной версия спецификации.
Мой вопрос заключается в следующем: как я могу сделать эту работу с компиляцией:
- сохранить его в кодировке UTF-8 кодируются
- и сохраняя BOM?
Благодарим вас за помощь и наилучшие пожелания.
Леа
Правильно: вам нужно удалить спецификацию. Он не имеет бизнеса в UTF-8, поэтому, конечно, это ошибка. Это давняя ошибка Microsoft. Никогда не помещайте спецификацию в UTF-8 !!!!! – tchrist
Здравствуйте. Спасибо за ваш ответ. Я использовал «Notepad ++» для кодирования файла как «UTF8 без спецификации». Теперь выполняется компиляция кода с помощью «javac». –
@tchrist [Стандарт Unicode (стр. 30)] (http://www.unicode.org/versions/Unicode6.0.0/ch02.pdf) допускает спецификацию в UTF-8, поэтому вы имеете полное право ее размещать если вы этого желаете. Почему вы хотите, это еще одна история, но «javac» должен ее обработать. – ArtB