IntelliJ - ввод неэкранированных символов UTF-8, отличных от ASCII

У меня есть программа, в которую я хочу вставить строки, содержащие неэкранированные символы Unicode, например.

String s = "(¬(a) ∨ ((¬(b) ∧ (c ∨ d)) ∨ e))"

Проблема в том, что эта строка уже читается неправильно, так как символы Unicode не экранированы, поэтому, если я сразу напечатаю ее, я получу:

(¬(a) ⨠((¬(b) ⧠(c ⨠d)) ⨠e))

Конечно, если я экранирую символы Unicode в строке, все работает нормально:

String s = "(\u00AC(a) \u2228 ((\u00AC(b) \u2227 (c \u2228 d)) \u2228 e))"
System.out.println(s); 

Output:
(¬(a) ∨ ((¬(b) ∧ (c ∨ d)) ∨ e))

Однако, по сравнению с первым входом, второй можно охарактеризовать только как зловещий и почти неясный.

Есть ли способ сохранить визуальное представление и при этом заставить его работать?

Кодировка файла UTF-8.


person Sudix    schedule 04.08.2018    source источник
comment
Вы пытались сохранить исходный код как UTF-8? блог .jetbrains.com/idea/2013/03/   -  person Malt    schedule 04.08.2018
comment
@Malt Да, я установил кодировку UTF-8. Если я, например. откройте его в Блокноте, он также отображается как правильный Unicode   -  person Sudix    schedule 04.08.2018


Ответы (1)


По сути, когда вы читаете String подобное в java, вы можете сохранить презентацию, см. пример здесь: https://ideone.com/krMJRf

То же самое работает и в новом шаблонном приложении InteliJ hello-world.

Я думаю, но вы не упомянули в вопросе, что вы читаете файл. Файл должен иметь хорошую кодировку, чтобы он работал.

person Kamil Witkowski    schedule 04.08.2018
comment
Я сделал именно то, что вы сделали в вашем примере, и это не сработало. Оказывается, что один файл в вашем проекте, который не закодирован в UTF-8, означает, что никакой другой файл (независимо от того, насколько он не связан) не может быть прочитан в UTF-8. Спасибо за рабочий пример, иначе я бы никогда не понял, что это какая-то особенность, которая где-то возникла из структуры моего проекта! - person Sudix; 04.08.2018