Lỗi font chữ UTF-8 khi gửi dữ liệu từ jsp sang servlet java

Chào mọi người,
Hiện tại mình đang làm một ứng dụng java web trên intellij và sử dụng tomcat 9 nhưng măc phải một lỗi là khi chuyển dữ liệu từ jsp sang servlet thì bị lỗi font chữ khi content có nội dung tiếng việt (bị lỗi một số kí tự, còn một số kí tự thì lại không lỗi)
Mình đã thử một số cách như là:
1, Add response.setContentType("text/html; charset=UTF-8") và request.setCharacterEncoding("UTF-8") trong servlet
2, Add <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%> trong jsp
3, Add URIEncoding="UTF-8" useBodyEncodingForURI="true" trong Connector của server.xml
4. Add <request-character-encoding>UTF-8</request-character-encoding> trong web.xml
Nhưng kết quả đều không fix được lỗi. Ai đã fix được lỗi giống như mình đang bị thì chỉ mình với.
EDIT:
Mình nhận ra là không chỉ bên servlet mà cả của các class java thường thì cx bị lỗi các chuỗi tiếng việt :((
Mình cảm ơn nhé

Cái này là font của intellij hay sao ấy mà, bạn set mấy cái kia là khi duyệt browser

2 Likes

Bạn có form trong web để người dùng tìm kiếm địa chỉ. Sau đó bạn gọi đến Nominatim để lấy kết quả.

Do các kí tự Unicode bị “ép” sang ANSI nên nó thành ? hết.
Một số kí tự tiếng Việt vẫn nằm trong ANSI nên không bị sao:

âêđôé...

Nếu bạn gửi form bằng GET thì có thể tham khảo: https://stackoverflow.com/questions/17212353/how-to-process-encoded-unicode-text-in-servlet
Nếu bằng POST, cũng có thể làm tương tự:

  • Chuyển chuỗi về mảng byte dạng ANSI.
  • Chuyển mảng byte ANSI về chuỗi UTF8.
  • Chuyển về dạng URL.

Đoán thế!
:sweat_smile:

3 Likes

Mình đang truyền string vào URL rồi gọi lên cái trang [Nominatim] để lấy kết quả nhưng cái string mình gửi đi thì bị lỗi nên mình nghĩ không phải là font của browser đâu

Okk mình hơi hiểu ý của bạn rồi và mình nghĩ đúng là UTF-8 đã bị ép sang ansi thật :slight_smile: Nhưng mình không hiểu tại sao lại bị ép như vậy tại mình cũng code riêng chức năng này ở một project java bình thường khác thì lại không có lỗi gì cả
Ở dưới là hình mình làm chức năng này ở một project java bình thường khác nhưng lại không xảy ra lỗi này ==


Mình đã giải quyết được rồi nhé :slight_smile: Hóa ra trên URL thì cần phải encode không thì sẽ bị lỗi utf-8. Cảm ơn mn đã giúp mình

4 Likes

Bạn ơi có thể cho mình xin solution không ạ? Mình cũng đang làm java web, mà khi truyền text tiếng việt từ JSP vào servlet là bị lỗi “?” trong các chữ. Mình đọc solution của bạn nhưng không hiểu lắm :frowning:

1 Like

Từ khóa: url encode

3 Likes

bạn ơi mình cx đag dùng intellij mà chương trình servlet không chạy như mong muốn , không biết bạn cấu hình project sao , kiểu như jdk mấy , kết nối database thì add thư viện mssql-jdbc bản mấy, hay tomcat bn , hoặc bạn có thể chụp cấu hình file pom.xml cho mk xem với

có thể cho mình xin cách để fix lỗi này của bạn được khong

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