2016-05-29 3 views
0

В документации говорится Oracle:Влияет ли кодирование кода программы java на компиляцию?

-Кодирование кодирование

Установить имя кодировки исходного файла, например, EUC-JP и UTF-8. Если -encoding не указан, используется конвертер по умолчанию платформы.

Я знаю, что конвертер по умолчанию для платформы Mac OS X является Mac Roman. Но когда у меня есть файл .java, закодированный в UTF-8 и многие другие кодировки, код успешно скомпилирован. Я также попытался заставить javac прочитать кодировку UTF-8 и EUC-JP из кодированного программного кода Mac Roman, а также успешно скомпилирован.

Почему это происходит? Я ожидаю, что все вышесказанное потерпит неудачу.

+0

Если вы используете только «базовые» символы, кодировка не будет иметь большого значения. – jonrsharpe

+0

@jonrsharpe Я протестировал, используя документ hello world, но почему это? Разные кодировки не используют разные двоичные строки для представления символа? – Kun

+1

Поскольку символы ASCII 32-127 (английские буквы, арабские цифры, основные знаки препинания) одинаковы почти везде. http://www.joelonsoftware.com/articles/Unicode.html. Попробуйте смешивать вещи с более сложными персонажами, и это начнет становиться интересным. – jonrsharpe

ответ

1

откомпилировать и запустить этот код:

System.out.println("".length()); 

Когда файл будет сохранен как UTF-8 и интерпретируется как таковой, он будет печатать 2, так как смайлик нуждается в двух char сек, которые будут сохранены.

Когда файл интерпретируется как MacRoman, он будет печатать 4, так как кодировка UTF-8 имеет длину четыре байта.

:

При попытке это (Примечание Вы можете использовать этот код в модульном тесте, чтобы обеспечить правильную кодировку.):

System.out.println(''); 

Компиляция, как MacRoman даже не работает.

Итак, до тех пор, пока все содержимое UTF-8 находится в строковых литералах и комментариях, все работает.

Смежные вопросы