По умолчанию исходные файлы Java хранятся в кодировке по умолчанию платформы, и именно так javac
читает файлы, если -encoding
не указан.
Если вы введете/вставьте символы в исходный файл в Eclipse, Eclipse автоматически изменит кодировку на UTF-8 (я считаю, что она подсказывает вам сначала, но я не уверен).
В Eclipse каждый источник Java теоретически может быть в разных кодировках. Eclipse запоминает кодировку каждого исходного файла, и вы можете видеть и/или изменять эту кодировку в диалоговом окне свойств файла в Eclipse.
Если Eclipse изменил кодировку на UTF-8, то компиляция в Eclipse будет работать нормально, но компилируется вне, например. путем вызова javac
или с помощью Ant, не будет работать, потому что они будут по умолчанию читать исходный файл, используя стандартную кодировку платформы.
Итак, если у вас есть смесь кодировок исходного файла, вы должны изменить их все на одну и ту же кодировку, поэтому с помощью javac
можно указать эту общую кодировку. У вас есть два варианта:
- Конвертировать все файлы в UTF-8 и указывать
-encoding UTF-8
.
- Преобразование всех файлов в стандартную кодировку платформы и использование экранов unicode для символов, которые не поддерживаются этой кодировкой, которая для
ý
равна \u00FD
.
Как это работает, прежде чем скомпилировать его? Вы придумали свой собственный интерпретатор Java, который может напрямую запускать исходный код Java без его компиляции? – Andreas
Как он работает? – Andreas
@Andreas Я запускаю его с Eclipse, который, вероятно, использует Java 1.8. С компиляцией я подразумеваю компиляцию с Java 1.6 и экспорт ее в банку. – MaggiCraft