Bir Java Web projesinde, bir Tomcat sunucusu kullanıyorsanız, verilerle etkileşim kurarken genellikle Çince'nin bozuk olmasıyla ilgili bir sorun olacaktır. Nedenler temel olarak aşağıdaki iki kısma ayrılabilir:
1. JSP sayfasında, Çince hiç görüntülenemez.
Bu durumda, genel nedenler şunlardır:
Dosya başlığının karakter seti Çince karakter setine ayarlanmamıştır.
Çözüm: Aşağıdakileri dosya başlığına yazın:
veya
utf-8 kodlaması, her ikisi de Çince karakter kümeleri olan gb2312 karakter kümesiyle de değiştirilebilir, ancak genellikle utf-8 kullanılır
2. Gönderim sırasında bozuk karakterler görüntüleniyor
Gönderim işlemi sırasında görüntülenen bozuk karakterler, Çince karakterler tomcat sunucusundan geçtikten sonra IDE konsolunda oluşturulan hatalı Çince karakterlere, gönderilen sayfaya vb. Atıfta bulunur.
İstemcide veya tarayıcıda bozuk mu yoksa sunucuda mı bozuk olduğunu belirlemek için URL'deki Çince parametresinin bozuk olup olmadığını görmek için genellikle bu Çince parametresini URL üzerinden geçirebiliriz.
Çince verilerini sunucuya gönderirken, hatalı Çince karakterlerin nedenleri şunlardır:
Sunucuya Çince karakterler gönderildiğinde, sunucu varsayılan olarak ISO-8859-1 kodlamasını kullanır ve web sayfası uyumlu olmayan utf-8 veya gb2312 kodlamasını kullanır.
Üç çözüm var:
(1) Çince dizeleri doğrudan utf-8 formatına dönüştürün
Bu yöntem, Çince karakter dizesini doğrudan Çince'yi destekleyen bir kodlamaya dönüştürmektir, ancak bu yöntem her karakter dizesini dönüştürmelidir, bu çok doğrudan ama çok zahmetlidir.
(2) İsteğin kodlama yöntemini doğrudan değiştirin
Çin kodlamasını desteklemek için isteğin kodlamasını değiştirebilirsiniz, böylece tüm sayfadaki tüm istekler otomatik olarak Çince'ye dönüştürülebilir.
Ancak bu yöntemin değeri çıkarmadan önce istek kodlamasını ayarlaması gerektiği ve form gönderme yönteminin post olması gerektiği ve bu yöntemin de her sayfa için isteği ayarlaması gerektiği unutulmamalıdır ki bu da oldukça zahmetlidir.
(3) Filtreleri kullanın
Büyük ölçekli bir projede, her dosya için kodlamayı ayarlamak çok zahmetlidir, bu nedenle projede genellikle Tomcat Chinese problemini çözmek için filtreler kullanılır.
Filtreleri kullanarak, tüm Web uygulamasında birleşik kodlama ve filtreleme gerçekleştirebilirsiniz, bu daha rahattır.
Not: Filtrelerin kullanımı ayrıca form gönderme yönteminin gönderilmesini gerektirir, varsayılan olarak ayarlanmadıysa form gönderme yöntemi get
Filtre yöntemi yazın:
İlk olarak, EncodingFilter'ın java sınıfını oluşturun, kod aşağıdaki gibidir
paket Filtresi;
içe aktar javax.servlet. *;
import javax.servlet.annotation.WebFilter;
java.io.IOException ithalatı;
@WebFilter (filterName = "EncodingFilter")
public class EncodingFilter, Filter {
public void destroy () {
}
public void doFilter (ServletRequest req, ServletResponse resp, FilterChain zinciri) ServletException, IOException {
req.setCharacterEncoding ("utf-8");
chain.doFilter (req, resp);
}
public void init (FilterConfig yapılandırması) ServletException {
}
}
Ardından web.xml'yi yapılandırın
Unutulmamalıdır ki web.xml etiketlerinin belirli bir sırada olduğu ve sıra doğru değilse öğe türü "web-app" eşleşmelidir "hatası bildirilecektir.
Örneğin, filtre gibi etiketler sunucu uygulamasının önüne yerleştirilmelidir.
Yeniden gönderin ve yeniden başlatın, bozuk Çince sorunu başarıyla çözüldü (ayrıca formun postalama yöntemi olmasını gerektirir)
---------------------