2010-11-01 50 views

Trả lời

21

Java Strings hỗ trợ Unicode, vì vậy tiếng Trung và tiếng Nhật không có vấn đề gì. Các công cụ khác (chẳng hạn như trình soạn thảo văn bản) và vỏ hệ điều hành của bạn có thể cần được thông báo về nó.

Khi đọc hoặc in dữ liệu Unicode, bạn phải đảm bảo rằng bàn điều khiển hoặc luồng cũng hỗ trợ Unicode (nếu không nó có thể sẽ được thay thế bằng dấu hỏi).

Writer unicodeFileWriter = new OutputStreamWriter(
    new FileOutputStream("a.txt"), "UTF-8"); 
unicodeFileWriter.write("漢字"); 

Bạn có thể nhúng literals Unicode trực tiếp trong các tập tin mã nguồn Java, nhưng bạn cần phải nói với trình biên dịch rằng tập tin là trong UTF-8 (javac -encoding UTF-8)

String x = "漢字"; 

Nếu bạn muốn đi hoang dã , bạn thậm chí có thể sử dụng các ký tự Trung Quốc theo tên phương thức, biến hoặc tên lớp. Nhưng đó là chống lại các quy ước đặt tên, và tôi mạnh mẽ sẽ không khuyến khích nó ít nhất là cho tên lớp (vì họ cần phải được ánh xạ vào tên tập tin, và Unicode có thể gây ra vấn đề đó):

結果 漢字 = new 物().処理(); 
+0

Tôi không có ký tự tiếng Trung trong bảng chính của mình nên mã nào tôi nên viết để in ký tự tiếng Trung. – sjain

+1

Bạn đang sử dụng hệ điều hành nào? Bạn không cần một bàn phím đặc biệt, đây là việc chăm sóc phần mềm. Ví dụ tôi gõ 漢字 là "kanji + SPACE". Ngoài ra, sao chép/dán từ trình duyệt web hoặc một số nguồn khác hoạt động. – Thilo

+0

Điều gì sẽ xảy ra nếu các ký tự tiếng Trung không có trong tệp? Ý tôi là, có bất kỳ Writer Unicode trực tiếp nào có thể xử lý nó không? –

3

Chỉ cần sử dụng nó, Java Strings là đầy đủ unicode, vì vậy nên không có gì khó khăn để chỉ nói

System.out.println("世界您好!"); 
+0

Chỉ cần đảm bảo tệp mã nguồn của bạn được mã hóa Unicode nếu bạn sử dụng hằng số không phải ASCII. – AlcubierreDrive

+1

Bạn có thể cần phải điều chỉnh ngôn ngữ để hỗ trợ UTF-8 trong System.out và cho trình biên dịch biết rằng tệp nguồn của bạn là UTF-8. – Thilo

3

Một chút lỗi thời nhưng nó làm tôi wow!

http://xahlee.org/java-a-day/unicode_in_java.html

Bài viết này là về bu đặt tên biến từ đó bạn có thể nói đó là đủ để viết Hoa/Nhật chuỗi của bạn trực tiếp trong mã nguồn của bạn.

1

Thêm một điều cần nhớ , Reader nên BufferedReader, và những gì tôi muốn nói là:

BufferedReader br = new BufferedReader (new InputStreamReader (new FileInputStream (f), "UTF-8")); 

này phải được thực hiện bởi vì khi bạn đọc các tập tin, readLine() có thể được gọi là:

while (br.readLine() != null) 
{ 
    System.out.println (br.readLine()); 
} 

này là phương pháp duy nhất mà tôi tìm thấy có thể hoạt động bình thường vì một Reader thông thường không chứa phương thức void readLine() không tĩnh (phương thức này không chấp nhận bất kỳ thứ gì).

Các vấn đề liên quan