Tomcat nie koduje poprawnie Literały z ciągów zawierające znaki Unicode. Problem występuje na serwerze Linux, ale nie na moim komputerze programistycznym (Windows). Wpływa na TYLKO ciągi literowe (nie ciągi odczytane z DB lub z pliku !!!).Jak używać UTF-8 z tomcat
- mam ustawić
URIEncoding="utf-8"
w znaczniku Connector (server.xml). - Użyłem setCharacterEncoding().
- Sprawdziłem śledzenie stosu (bez filtrów, które mogą ustawiać kodowanie).
- Mam ustawiony środowiska LANG zmienną
- I cheched nagłówkach HTTP i są prawidłowe (Content-Type = text/plain; charset = UTF-8)
- sprawdziłem kodowanie w przeglądarce i jest poprawne (UTF-8)
Żadne z powyższych nie działa. Jakieś pomysły na temat tego, czego może mi brakować?
public class Test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/plain;");
Writer w = resp.getWriter();
w.write("Μαλακία Latin"); //Some unicode characters
w.close();
}
Powyższe pokazuje to w przeglądarce. ÎÎ »Î» Î · νικά Latin
Upewnij się, że źródłowy plik java zawiera zestaw kodowania UTF-8. Używam Notepad ++, aby to sprawdzić. Otwórz plik i sprawdź menu "Kodowanie". Jeśli kodowanie nie jest UTF, przetnij całą zawartość pliku źródłowego, zmień kodowanie, wklej zawartość ze schowka i zapisz plik źródłowy. –
Po wyświetleniu odpowiedzi serwera w edytorze szesnastkowym, jaka jest faktyczna sekwencja bajtów zwrócona? Co to jest kodowanie pliku źródłowego? – Mikaveli
* "Problem występuje na serwerze Linux, ale nie na moim komputerze programistycznym (Windows)." * W jaki sposób wdrażasz system Linux? Czy przesyłasz pliki jeden po drugim? Jeśli tak to jak? Przez FTP? Jeśli tak, czy przesyłasz w trybie binarnym? – BalusC