Witam.
Odkąd zacząłem się bawić w JSP mam problem z polskimi fontami. Otóż nawet jeśli dodam znacznik meta "charset=iso-8859-2" to i tak na stronkach pojawiały się jakieś śmieci.
Tak było dość dawno temu i wtedy postanowiłem sobie to jakoś usprawnić.
Ostatnio znów wróciłem do JSP i postanowiłem napisać funkcję, która sama koduje znaki. Na ten pomysł wpadłem gdy w edytorze AceHTML pisząc np. literkę "ą" otrzymywałem "&# 261;" (bez spacji). Jak się potem okazało była ona dobrze wyświetlana niezależnie od znaczników META przeglądarki! Uznałem, ze to super sprawa bo gwarantuje poprawność wyświetlania polskich fontów. Niestety... Z JSP nie jest już tak różowo.
Oto mój kod:
public class PolishLetters {
static String[][] array = {
{"ą","&# 261;"},
{"Ą","&# 260;"},
{"ć","&# 263;"},
{"Ć","&# 262;"},
{"ż","&# 380;"},
{"Ż","&# 379;"},
{"ó","&# 243;"},
{"Ó","&# 211;"},
{"ę","&# 281;"},
{"Ę","&# 280;"},
{"ź","&# 378;"},
{"Ź","&# 377;"},
{"ł","&# 322;"},
{"Ł","&# 321;"},
{"ś","&# 347;"},
{"Ś","&# 346;"},
{"ń","&# 324;"},
{"Ń","&# 323;"}
};
private PolishLetters(){}
public static synchronized String polishLetters(String str){
if (str.length()>0){
String input = str;
StringBuffer output = new StringBuffer("");
boolean appended = false;
for (int i=0; i<input.length(); i++){
appended = false;
for (int j=0; j<array.length; j++){
if (input.charAt(i)==array[j][0].charAt(0)) {
output.append(array[j][1]);
appended = true;}
}
if (!appended) output.append(input.charAt(i));
}
return output.toString();
}
else return new String("");
}
}// klasy;
Sorki za formatowanie i brak komentarzy.
Gdy wywołam sobie z Javy np. PolishLetters.polishLetters("ąąą"); to dostaję odpowiednio łańcuch: "&# 261;&# 261;&# 261;".
Jeśli natomiast korzystam z tego mechanizmu ze strony JSP to łańcuch wynikowy dostaję taki sam jak dostarczony do funkcji! :(
Analizując argument dostarczony do funkcji stwierdziłem, że zamiast przykładowej literki "ś" do funkcji został przekazany szlaczek "?"... Oczywistym jest, że wtedy porównanie przekazanego znaczka z polskimi literami w tablicy nie da zamierzonego rezultatu.
Co powinienem zrobić?
Czy są jakieś inne (łatwiejsze i bardziej pewne) sposoby radzenia sobie z polskimi fontami w JSP?
Z góry Thx za wszysttkie odpowiedzi.
Pozdrawiam.