Tôi không thể tự tìm thấy câu trả lời. Có cách nào để nói với jackson để sử dụng mã hóa UTF-8 khi sử dụng ObjectMapper để serialize và deserialize đối tượng?Jackson ObjectMapper với mã hóa UTF-8?
Cảm ơn
Tôi không thể tự tìm thấy câu trả lời. Có cách nào để nói với jackson để sử dụng mã hóa UTF-8 khi sử dụng ObjectMapper để serialize và deserialize đối tượng?Jackson ObjectMapper với mã hóa UTF-8?
Cảm ơn
Jackson tự động phát hiện mã hóa được sử dụng trong nguồn: theo đặc điểm kỹ thuật JSON, mã hóa chỉ có giá trị là UTF-8, UTF-16 và UTF-32. Không có mã hóa nào khác (như Latin-1) có thể được sử dụng. Do đó, tính năng phát hiện tự động dễ dàng và được thực hiện bởi trình phân tích cú pháp - không có phát hiện mã hóa nào được chấp nhận vì lý do này. Vì vậy, nếu đầu vào là UTF-8, nó sẽ được phát hiện như vậy.
Đối với đầu ra, UTF-8 là mặc định; nhưng nếu bạn muốn sử dụng mã hóa khác một cách rõ ràng, bạn có thể tạo JsonGenerator
một cách rõ ràng (với phương thức mất JsonEncoding
) và chuyển số này đến ObjectMapper
.
Hoặc trong cả hai trường hợp, tất nhiên bạn có thể xây dựng thủ công java.io.Reader
/java.io.Writer
và sử dụng bất kỳ mã hóa nào bạn muốn.
Tôi không chắc chắn UTF-8 có thể là mặc định như thế nào, khi tôi đã bỏ ra hàng giờ cố gắng để JSON được mã hóa bằng UTF-8 thay vì UTF-16. – cbmanica
@cbmanica Hãy tin tôi, UTF-8 là mặc định tuyệt đối cho Jackson khi bạn đưa ra 'java.io.OutputStream'. Nhưng có các giá trị mặc định khác: JDK có mã hóa mặc định của nó nếu bạn chọn xây dựng cá thể 'Writer', hoặc một số khung công tác/lib khác thực hiện nó. Chúng nằm ngoài Jackson. – StaxMan
@cbmanica Bạn có thể, vui lòng chia sẻ mã của bạn đã giúp bạn không? Có vẻ như tôi có cùng một vấn đề. – Tregoreg