Add text nhật vào file .txt bị lỗi ecoding làm sao để convert về đinh đạng mong muốn

Dear mọi người.
Mình đang học về javaFX và có làm một bài tập add dữ liệu vào một file .txt và mình có gặp một lỗi như sau
Input đầu vào là:“北海道銀行” sau khi ghi vào file text thì hiển thị thành “蛹玲オキ驕馴橿陦�” mình đang hiểu là bị lỗi encoding, mình muốn dữ liệu sau khi add phải là text nguyên bản, ai có thể gợi ý giúp mình được không ạ.

2

3

Bạn đọc thử link này xem:

http://www.thedundua.com/david/2011/12/29/java-filewriter-and-utf-8/

4 Likes

Mình nghĩ bạn nên học lại phần FileIO đi. Code bạn để lẫn lộn giữa text stream và binary stream :disappointed_relieved:

https://docs.oracle.com/javase/tutorial/essential/io/

5 Likes

Bạn thử xem cách này nhé :smile: Mình dùng cho tiếng Việt thì không sao nhưng không biết tiếng Nhật thì như thế nào :smile:

    public static void writeUTF8Text(String file, String text, boolean append) throws FileNotFoundException, UnsupportedEncodingException, IOException{
        FileOutputStream fo = new FileOutputStream(file, append);
        OutputStreamWriter osw = new OutputStreamWriter(fo, "utf-8");
        osw.write(text);
        osw.flush();
        fo.close();
    }
1 Like

Bạn thử thay charset thành “UTF-16” xem có tác dụng không?

1 Like

da cam on ban nhe hi hi

cam on ban dua ra chi dan minh se doc thank

cam on ban nhieu code cua minh tieng viet no cung khong bi loi

doi on ban nhe, minh doi thanh UTF-16 LA OK THANH BAN NHIEU

ban co the giai thich cho minh tai sao lai la UTF-16 maf khong phai laf UTF-8 khong a

1 Like

merged and moved by noname00

2 Likes

Có lẽ là bảng UTF-8 không chứa đủ các ký tự mà bạn cần. Nếu muốn hiểu hơn về kỹ thuật và cách mã hoá ký tự vào các bảng mã thì bạn tự tra cứu nhé.

không phải do bảng UTF-8 không đủ kí tự mà là do bạn đó ghi file với utf-16 và đọc file với utf-8 nên lỗi thôi

1 Like

ke ca minh khong doc voi dang UTF-8 nhung ki tu van bi loi ban aj

Kiểu nào cũng được, miễn là kiểu mã hóa khi ghi và đọc phải giống nhau.

UTF-8 được dùng phổ biến hơn.

1 Like

đó là do bạn đọc và ghi ở 2 encoding khác nhau thôi. Mấy kí tự nguồn mà bạn viết đều là các từ thông dụng chẳng phải là kí tự quá đặc biệt đến nỗi UTF-8 không thể hiển thị được nên lỗi không phải do encoding làm mất dữ liệu mà là do bạn đang dùng sai encoding ở đọc và ghi thôi

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?