01/10/2018, 17:13
Cách nhập tiếng Việt từ Console?
Chào mọi người, mình đang làm 1 Project Console nhưng cần nhập tiếng việt từ Console, mình đã thử cách sau :
package test_1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
public class Test_1 {
public static void main(String[] args) throws UnsupportedEncodingException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in, "UTF8"));
Scanner scan = new Scanner(in);
System.out.println("Nhập chuỗi Tiếng Việt: ");
String ans = scan.nextLine();
scan.close();
System.out.println("Ket qua: " + ans);
}
}
Mọi người cho mình hỏi là sai chỗ nào với ạ ? Thanks All
Bài liên quan
cho hỏi bạn dùng ide hay text editor gì vậy
Vote xài API mới: System.console, xài cái này thì ko cần lo lắng về encoding nữa.Mình dùng Netbean bạn ạ :))
Nó bị lỗi này bạn ạ @@
Mình tự hỏi tại sao bạn sử dụng BufferedReader rồi lại sử dụng Scanner làm gì nữa ???
Đây là code mình sửa:
Đây là mình run trên Netbean, nó vẫn bị lỗi vậy @@ Thanks bạn
Thử lưu file dưới định dạng UTF-8 xem sao !
Người ta đọc từ console chứ không phải từ file, cũng không ghi ra file.
Cái này bug ngay từ lúc đọc rồi, chứ out.print xử lý tốt Unicode.
OK, sau một lúc nghiên cứu thì mình cũng biết thế nào rồi:
API System.console không xài được với redirected terminal (VD terminal được tích hợp của IDE), nó trả null, mà nó cũng không có cho tự chỉnh Unicode gì ráo (chỉ có auto detect encoding thôi), bên trên mình nhầm lẫn cho mình xin lỗi.
Ở trên các hệ điều hành họ Unix thì bạn cứ nhập xuất bình thường không cần chỉnh thêm, nó mặc định UTF8 cả.
Ở trên Windows thì khá phức tạp:
Tóm lại trên Windows thì thường là:
The first post example can be simplified, I know that. But your example will not work for Vietnamese language. We need UTF-8 or UTF-16 to display Vietnamese language, but the console encoding is not set to that (setting encoding of Scanner or FileOutputStream to UTF-8 or UTF-16 will not work because the underlying encoding of terminal is intact). So one has to understand how all of this works.
I written that too in my post
That why I suggested @D.A.N_3002 to use another way specially for Windows:
Cảm ơn bạn mình nghĩ là nó phụ thuộc vào IDE mà mình đang dùng và lấy theo OS của mình
I think it depends on the IDE that I am using and taking my OS Thank you
Thật ra bạn nên hiểu cách nó hoạt động (post của mình đã ghi rõ), chứ đừng dựa dẫm quá vào IDE, nếu bạn chạy jar ngoài IDE thì sao?
Chỉ có UTF-8, UTF-16 và CP1258 (Tiếng Việt Unicode Tổ hợp) là support cho Tiếng Việt thôi (không tính đến các bảng mã “mượn” Iso-8859-1 như VNI, TCVN3, v.v.).