2015-02-01 3 views
0

Если я печатаюJava проблема кодирования с ├ └

System.out.println("│ ├── └──"); 

Я вижу только вопросительные знаки (???). Швы, что это проблема короля кодирования. Любые идеи, как это исправить?

+0

Как вы управляете кодом? Что такое кодировка ваших файлов? – Pshemo

+0

Я запускаю его через терминал bash + Eclipse + IDEA. И кодировка UTF-8. – barbara

+0

Какова кодировка вашего исходного файла? Что такое системный язык ('echo $ LANG')? –

ответ

1

Любые идеи, как исправить это?

Есть два возможно причины вашей проблемы:

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

Исправить это, чтобы настроить параметры компилятора, чтобы указать правильную кодировку исходного файла. Как вы это сделаете, это будет зависеть от того, как вы компилируете. Если вы компилируете из командной строки с помощью javac, используйте опцию -encoding.

В качестве альтернативы обходной путь для этой проблемы заключается в замене нарушителя в исходном коде экранами Unicode. Например:

String s = "\u251c"; 

должно содержать одну символьную строку, состоящую из символа «├». Я бы рекомендовал обходное решение. Исходный код, который включает символы, отличные от ASCII, всегда будет чувствителен к тому, как вы редактируете и компилируете ... и это не очень хорошо.

2) Это может произойти из-за несоответствия между вашим исходным кодированием платформы исполнения Java и фактическим кодированием того, что выводит результат.

Исправления это один из:

  • изменить кодировку для отображения,
  • переопределения кодировки по умолчанию для виртуальной машины Java (например, с помощью -Dfile.encoding=UTF-8) или
  • изменить свой код для вывода используя конкретное кодирование.

Что лучше всего зависит от обстоятельств; например почему вещи «неправильны» в первую очередь.


Стоит запустить это тестовое приложение из командной строки, чтобы узнать, существует ли проблема. Если это так, перенаправите стандартный вывод в файл и используйте утилиту hex dump (например, od в Linux), чтобы узнать, как кодируются символы. Это поможет вам отличить причины 1) и 2) выше.

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

2

Используйте коды UTF-8 вместо фактических символов. Например, ├ является \ u251c.

Вот ссылка, которая поможет вам преобразовать символы в соответствующие коды: http://www.cylog.org/online_tools/utf8_converter.jsp

Надеется, что это помогает!

1

Кодирование файла (Java редактор (и кодирования, что Javac компилятор лучше и использовать UTF-8. Как правило, это является IDE или настройки проекта.

Можно проверить, что оба кодироаки равны, по и-экранирования этих символов: \u251C и так далее,

System.out должен использовать кодировку операционной системы Если кодирование не может преобразовать эти символы, можно увидеть ? Если консоль консоль эмуляции из.. IDE, вы можете выполнить поиск настроек этой кодировки. Также проверьте, что шрифт консоли содержит эти графические символы. Запуск IDE с помощью java -Dfile.encoding UTF-8 может помочь.

В вашем случае: Странно. Проверьте исходную кодировку с помощью gedit, dump System.getProperty("file,encoding").

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