É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 az OutputStreamWriter 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.