Với điều kiện là bạn thực sự đang sử dụng Khuôn mặt (sử dụng UTF-8 theo mặc định) và không sử dụng PrimeFaces ajax ( được biết là gây nhầm lẫn mã hóa nội dung yêu cầu ), vấn đề của bạn có 2 nguyên nhân:
-
Mã hóa ký tự trình điều khiển JDBC của MySQL không được đặt thành UTF-8. Điều này gây ra các ký tự bị cắt xén trong DB.
-
Mã hóa ký tự bảng điều khiển Eclipse chưa được đặt thành UTF-8. Điều này gây ra các ký tự bị cắt xén trong
System.out
.
Các giải pháp là:
-
Thêm
useUnicode=yes
vàcharacterEncoding=UTF-8
tham số cho kết nối JDBC. Bạn có thể chỉ định nó dưới dạng chuỗi truy vấn trong URL JDBCjdbc:mysql://hostname:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
hoặc dưới dạng thuộc tính kết nối trong nguồn dữ liệu JDBC, giống hệt như cách bạn đã chỉ định tên người dùng, mật khẩu, v.v.
-
Yêu cầu Eclipse sử dụng UTF-8 làm mã hóa bảng điều khiển bằng cách Cửa sổ> Tùy chọn> Chung> Không gian làm việc> Mã hóa tệp văn bản :