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); }}

*

Capture.PNG1232×255 2.91 KB

Mọi người cho mình hỏi là sai chỗ nào với ạ ? Thanks All


1 Like
Tiếng việt trong console
hell6w9rld (HelloWorld) August 18, 2018, 4:25pm #2

cho hỏi bạn dùng ide hay text editor gì vậy


2 Likes
MeigyokuThmn (明玉) January 5, 2019, 7:42am #3

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.

Bạn đang xem: Đọc file tiếng việt trong java

BufferedReader in = new BufferedReader(System.console().reader());Nguồn tham khảo: stackoverflow.com

*

Capture.PNG1498×170 4.66 KB
1 Like
kienonline19 (Nguyen Kien) August 18, 2018, 4:25pm #6

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:

package chap01.basic;import java.io.*;public class Test {public static void main(String<> args) {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));System.out.println("Nhập chuỗi Tiếng Việt: ");String ans = "";try {ans = in.readLine();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if(in != null) {try {in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}System.out.println("Kết quả: " + ans);}}

fix.png1366×768 80.2 KB
1 Like
anon12276517 (anon12276517) August 18, 2018, 4:25pm #7

Đây là mình run trên Netbean, nó vẫn bị lỗi vậy
Thanks bạn

image.png1526×754 48.1 KB
kienonline19 (Nguyen Kien) August 18, 2018, 4:25pm #8

Thử lưu file dưới định dạng UTF-8 xem sao !


MeigyokuThmn (明玉) August 18, 2018, 4:25pm #9

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.


2 Likes
MeigyokuThmn (明玉) September 22, 2018, 2:24pm #10

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ả.

Xem thêm: Bài Tập Về Although In Spite Of Despite Có Đáp Án Violet Mới Nhất 2022

Ở trên Windows thì khá phức tạp:

Output thì tương tự, đi từ UTF-16LE (encoding của class String trong Java) qua Output Encoder của Java, rồi mới qua Output Decoder của terminal. Output Encoding của CMD cũng thường là Cp437, trong NetBeans hoặc Eclipse thì đều theo project setting mặc định là UTF-8.

Tóm lại trên Windows thì thường là:

Input: UTF-16LE