Polskie stringi w Javie

0

W programie źródłowym Javy chcę umieścić string z polskimi znakami, np.
String s = "żółć";
Ale Java pracuje w Unicode. W jakim standardzie polskich znaków powinien być napisany program źródłowy, żeby przy kompilacji zostały wygenerowane właściwe znaki Unicodu ?
Wiem, że można zapisać znaki Unicode wprost, ale taki zapis jest znacznie mniej czytelny.

0

Moim zdaniem jak napiszesz tak jak masz to wszystko bedzie ok skoro to unicode. Probowales to kompilowac? U mnie dziala i nie musze nic przestawiac, wiec u Ciebie tez powinno.

0
Ali G napisał(a)

Moim zdaniem jak napiszesz tak jak masz to wszystko bedzie ok skoro to unicode. Probowales to kompilowac? U mnie dziala i nie musze nic przestawiac, wiec u Ciebie tez powinno.

Problem się pojawia jak niektóre polskie znaki próbujesz wpisać np. w JCreatorze :/ Czy można jakoś wyłączyć te skróty?

0

Skompilowałem taki programik (przerobiona recepturs 9.1 z "Java Receptury" Darwina)
import java.io.*;
// Polszczyzna pliku programu: Windows_CEE albo Cp1250)
/**

  • Czytaj plik i wypisuj używając BufferedReader i System.out
    /
    public class Polski {
    final String T1 = "cygańskie źrebię ma żółtą sierść";
    final String T2 = "CYGAŃSKIE ŹREBIĘ MA ŻÓŁTĄ SIERŚĆ";
    public static void main(String[] av) {
    Polski c = new Polski();
    if (av.length == 0)
    c.process(new BufferedReader(
    new InputStreamReader(System.in)));
    else for (int i=0; i<av.length; i++)
    try {
    c.process(new BufferedReader(new FileReader(av[i])));
    } catch (FileNotFoundException e) {
    System.err.println(e);
    }
    }
    Polski() {
    System.out.println
    ("Polszczyzna pliku programu: Windows_CEE albo Cp1250");
    System.out.println("Stałe tekstowe z programu:");
    System.out.println(T1);
    System.out.println(T2);
    }
    /
    * czytaj jedną linię */
    public void process(BufferedReader is) {
    try {
    String inputLine;
    while ((inputLine = is.readLine()) != null) {
    System.out.println(inputLine);
    }
    is.close();
    } catch (IOException e) {
    System.out.println("IOException: " + e);
    }
    }
    }
    Ten programik wstukałem swoim edytorkiem, pracującym w trybie konsoli, który ma mozliwość wyboru różnych standardów polszczyzny. Identycznie byłoby gdyby poslużyć się Notepad'em, czy innym edytorem pracującym w GUI.
    I oto jak wyglądały wyniki na konsoli:

Polszczyzna pliku programu: Windows_CEE albo Cp1250
Sta?e tekstowe z programu:
cyga˝skie črebiŕ ma ?ˇ?t? sierťŠ
CYGAĐSKIE ĆREBI? MA ?ËúTą SIERîĂ

Gdy wyniki przekierowalem do pliku, plik wyglądał w Notepadzie tak:

Polszczyzna pliku programu: Windows_CEE albo Cp1250
Stałe tekstowe z programu:
cygańskie źrebię ma żółtą sierść
CYGAŃSKIE ŹREBIĘ MA ŻÓŁTĄ SIERŚĆ

Wniosek stąd taki, że Java dostosowuje się do polszczyzny Windows GUI w pisaniu do plików. Ale polszczyzna KONSOLI jest inna. Moje pytanie jest więc właściwie inne: Co zrobić,żeby polskie teksty były przez Javę wypisywane poprawnie na konsolę ?
Bo przepisanie programu wg polszczyzny konsoli wszystkiego nie załatwia. Dostałem przy kompilacji ostrzeżenia:
PolskiKons.java warning: unmappable character for encoding Cp1250
System.out.println("Sta?e tekstowe z programu:");

W konsekwencji polskie znaki wypisywane byly na konsolę poprawnie, ale z wyjatkiem liter "ł" i "ś", w miejsce ktorychwypisywane były znaki zapytania.

0

ja np zapisuję plik w Unicode (przez notatnik) i są wszystkie polski znaki stringów na konsoli.
Boleję, że JCreator ma tak wąską listę kodowań.
Jeśli chodzi o interpretację, porównywanie danych z innych źródeł niż string z kodu (z pliku, z sieci) to warto przetestować
PrintWriter o = new PrintWriter( new OutputStreamWriter(System.out,<nazwa kodowania="kodowania">), true);

http://baza.access.na.zlecenie.w.interia.pl

0

Proszę o usunięcie mojej wcześniejszej wypowiedzi.

Ten kod sprawdziłem i działa:
PrintWriter p = new PrintWriter( new OutputStreamWriter(System.out,"Cp852"));

à propos zamiany polskich znaków na encje Unicode to należy używać programu z dystrybucji Javy o nazwie native2ascii.

http://baza.access.na.zlecenie.w.interia.pl

1 użytkowników online, w tym zalogowanych: 0, gości: 1