Hỏi về cách fix lỗi font tiếng Việt trong jsp

Em xin chào mọi người ạ ,

Em đang học JSP thì bị mắc cái đoạn gửi mail , em gửi mail thì được rồi mà nó bị lỗi font chữ như này mà em chưa fix được , mong người chỉ dạy ạ .
image

Em đã thử code này vào serlet như trên mạng nhưng vẫn không được ạ .

response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");

Bổ sung code gửi mail :

public static boolean sendMail(String strTo, String Subject, String strMsg) {
    boolean result = false;
    String host = "smtp.gmail.com";
    Properties prop = System.getProperties();
    prop.put("mail.smtp.auth", "true");
    prop.put("mail.smtp.starttls.enable", "true");
    prop.put("mail.smtp.host", "smtp.gmail.com");
    prop.put("mail.smtp.port", "587");
    javax.mail.Session session = Session.getInstance(prop,
            new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("[email protected]", "PASS");
        }
    });
    session.setDebug(true);
    try {
        Message message = new MimeMessage(session);
        message.setHeader("Content-Type", "text/plain; charset=UTF-8");
        message.setFrom(new InternetAddress("[email protected]"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(strTo));
        message.setSubject(Subject);
        message.setText(strMsg);
        Transport.send(message);
        result = true;
    } catch (MessagingException ex) {
        result = false;
    } finally {
        return result;
    }
} 

Em thử chạy hàm sendMail ở dạng class thì ok , nhưng khi gọi nó từ servlet thì lỗi font ạ .

Ở các hàm setSubjectsetText, bạn cần thêm charset
VD:

message.setSubject(Subject, "UTF-8");
message.setText(strMsg, "UTF-8");
1 Like

Dạ em xin hỏi thêm vậy tại sao em test ở class thì chạy hoàn toàn bình thường , chỉ khi qua servlet gọi qua dùng thì lỗi ạ ?

Thử ngiệm tại hàm main trong class :
image

Kết quả :
image

Nhưng khi gọi hàm sendMail từ servlet :

Thì lại bị lỗi ?
image

Em thử thêm UTF-8 như bác chỉ thì bị lỗi ạ
image

Đổi khai báo:

Message message = new MimeMessage(session);

Thành:

MimeMessage message = new MimeMessage(session);
3 Likes

Em cảm ơn bác nhiều ạ .

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