Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1

    [NetBean IDE]: Đọc dữ liệu từ file, Trang jsp không hiển thị đúng tiếng việt Link: http://www.ddth.com/showthread.

    Mình viết 1 trang jsp, đọc dữ liệu tiếng việt từ 1 file và xuất ra trang html, mã nguồn thế này

    Mã:
    <%@page import="java.io.*"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h1><% out.print("Test thử hiển thị tiếng việt"); %></h1>
            <%
                response.setCharacterEncoding("UTF-8");
                try
                {
                    BufferedReader pollStream = new BufferedReader(new FileReader("D:\\test\\polls.txt"));
                    String str;
                    while((str = pollStream.readLine())!=null) 
                    {
                        out.println(str+"");
                    }
                    pollStream.close();
                }catch(Exception err)
                {
                    
                }
            %>
        </body>
    </html>
    Nội dung file polls.txt
    Mã:
    quê hương tôi
    nước mặn
    đồng chua
    làng tôi nghèo
    đất cày lên sỏi đá
    Như các bạn thấy, cực kỳ đơn giản đến mức ko thể đơn giản hơn được. Ấy thế mà khi mình chạy bằng netbean ( cấu hình mặc định chạy GlassFish Server 3.1.2 ), thì nó tòi ra cái mớ này :-O


    Test thử hiển thị tiếng việt
    quê hương tôi
    nước mặn
    đồng chua
    là ng tôi nghèo
    đất cà y lên s�i đá

    Trong khi cũng mã đó mình copy parse qua Eclipse ( Tomcat 7.0 ) thì được kết quả như ý

    Test thử hiển thị tiếng việt
    quê hương tôi
    nước mặn
    đồng chua
    làng tôi nghèo
    đất cày lên sỏi đá

    Tóm lại là có chuyện gì xảy ra với NetBean vậy ??? Cùng 1 mã nguồn chạy NetBean ra 1 kết quả, chạy Eclipse ra 1 kết quả. Bạn nào có kinh nghiệm chỉ giúp mình với :-O

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Phù, đã sửa được, nhưng vẫn ko rõ nguyên do cho lắm =))

    Theo lý thuyết trong sách thì để đọc file theo chuẩn Unicode thì chỉ cần xài những luồng chuyên dụng dành cho ký tự 2 byte Unicode như BufferedReader, FileReader ,..v....v... là ổn
    Mã:
    BufferedReader pollStream = new BufferedReader(new FileReader("D:\\test\\polls.txt"));
    Và thực tế khi mình dùng Eclipse IDE thì chỉ cần như vậy [IMG]images/smilies/Shame_on_you.gif[/IMG] . Có điều khi qua NetBean thì nó giở chứng [IMG]images/smilies/Cry.gif[/IMG]

    Sau 1 hồi test thử, mình đoán là vấn đề nằm ở chỗ các String mà luồng BufferedReader đọc ra ko phải là chuỗi Unicode. Như thế thì có lẽ luồng FileReader ko đọc file theo cách mà mình kỳ vọng. => Quyết định dùng luồng FileInputStream để đọc file theo dạng 1 byte thông thường, sau đó dùng luồng trung gian InputStreamReader chuyển nó sang "UTF-8", và vấn đề đc giải quyết

    Mã:
    BufferedReader pollStream = new BufferedReader(new InputStreamReader(
                            new FileInputStream("D:\\test\\polls.txt"), "UTF-8"));

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •