0

В качестве теста я создал файл с именем Hello.java и содержание являются следующие:Каков протокол/отношения между кодировками и языками программирования?

public class Hello{ 
    public static void main(String[] args){ 
     System.out.println("Hello world!"); 
    } 
} 

Я сохранил этот файл с UTF-8 кодирования.

В любом случае, скомпилирование и запуск проблемы не было проблемой. Этот файл был 103 bytes long.

Затем я сохранил файл с UTF-16 BE кодировка. На этот раз файл был 206 байтов длинный, так как скважина UTF-16 (как правило) нуждается в большем пространстве, поэтому здесь не удивительно.

Пробовал компиляции файла из моего терминала, и я получил все эти ошибки:

Hello.java:4: error: illegal character: '\u0000' 
    } 
    ^

Так что делает JAVAC работу только с UTF-8 закодированных исходных файлов? Это как стандарт?

javac -version 
javac 1.8.0_45 

Кроме того, я знаю только Java, но, допустим, вы используете код Python или любой интерпретированный язык программирования. (Извините, если я ошибаюсь, думая, что Python интерпретируется, если это не так.) Будет ли кодирование проблемой? Если нет, это повлияет на производительность?

Итак, слово «истина» является зарезервированным ключевым словом (для данного языка программирования ..), но в какой кодировке оно зарезервировано? ASCII - только UTF-8?

Как «истина» хранится на жестком диске или в памяти зависит от кодировки, в которой сохранен файл, поэтому язык программирования всегда должен работать с определенной кодировкой для исходных файлов?

ответ

1

Что касается javac, вы можете установить кодировку с параметром -encoding. Внутренне Java обрабатывает строки в UTF-16, поэтому компилятор преобразует все в это.

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

Ключевые слова не являются резервами в какой-либо конкретной кодировке. Это ключевые слова. У вас не может быть двух способов написания одного слова независимо от того, какую кодировку вы используете. Слова одинаковы.

Язык программирования не заботится о кодировании. Компилятор/интерпретатор.

+0

Будут ли файлы .class всегда utf-8? –

+0

@ KorayTugay Добавлено упоминание об этом. Java использует UTF-16 внутренне –

+0

Что делать, если интерпретатору необходимо обрабатывать файлы в разных кодировках? Как один файл utf8, но зависимость utf16? –