IntelliJ - การป้อนอักขระ UTF-8 ที่ไม่ใช่ ASCII ที่ไม่ใช้ Escape

ฉันมีโปรแกรมที่ฉันต้องการใส่ใน Strings ที่มีอักขระ Unicode ที่ไม่ใช้ Escape เช่น

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 แล้ว ถ้าฉันเช่น เปิดใน Notepad มันจะแสดงเป็น 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