Ékezetek
Rémálmomban ? jeleket látok a kedvenc ő és ű ékezetes karakterek helyén. Azt hiszem, már mindenki szívott ezekkel jó nagyokat, mert hiába menő fogalom a szép hosszú Internationalization (I18N), és annak testvérkéje a Localization (L10N). Szervlet, JSP és JDBC körökben gyakran előjövő problémák, és a Unicode sem hozta meg sajnos a várva várt megoldást, még a beépített Startrack-es karakterkészletével sem, azért adjunk időt neki. Mire figyeljünk, ha problémánk akad:
- Állítsuk be az adatbázis karakterkódolását.
- Megjelenítendő lap karakterkészletet állítsuk ISO-8859-2-re, mindenképp a tartalom kírása előtt.
- Form esetén a böngésző ugyanolyan kódolással fogja visszaküldeni az értékeket, mint a lap kódolása, ezt érdemes Unicode-dá konvertálni.
- Fájlból olvasáskor az
InputStreamReader
és íráskor azOutputStreamWriter
konstruktorának adjuk át a karakterkódolást. - Ha kódból írunk ki ékezetes karaktereket, akkor a fordítónak meg kell adni a karakterkódolást.
- Használhatunk Unicode kerülő szekvenciákat.
-
Ha semmi sem megy, használjuk a bűvős átalakítást:
String orig = request.getParameter("name"); String real = new String(orig.getBytes("ISO8859_1"),"ISO8859_2");
Természetesen így is sokat fogunk gányolni, és soha sem fogjuk megtudni, hogy hol hibáztunk. Árvíztűrő tükörfúrógép. Agyamra megy.