Discussion:
Konwersja iso-8859-2 na windows 1250
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Piotrek "Alchemik"
2005-05-30 17:45:00 UTC
Permalink
Napisalem maly programik, ktory teoretycznie bedzie zmienial kodowanie znakow
iso-8859-2 na standard cp1250, ale nie mam pojecia, czy on wogole dziala, nie za
bardzo wiem jakie testy mozna do niego zastosowac, moze ktos ma jakis ew. pomysl?

Z gory dzieki

String napis = new String ("ĄĆĘŻŹ");
File file = new File("ala.txt");
FileWriter out = new FileWriter(file);
out.write(napis + "\n");
byte[] bity;
bity = napis.getBytes("iso-8859-2");
String napis2 = new String(bity,"CP1250" );
out.write(napis2);
out.close();
--
Piotrek "Alchemik" gg:183441 kilobyte[at]tlen[dot]pl
/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\
"I am not in this world to live up to other people's expectations, nor
do I feel that the world must live up to mine." /Fritz Perls
cromax
2005-05-31 07:16:52 UTC
Permalink
Post by Piotrek "Alchemik"
Napisalem maly programik, ktory teoretycznie bedzie zmienial kodowanie
znakow iso-8859-2 na standard cp1250, ale nie mam pojecia, czy on wogole
dziala, nie za bardzo wiem jakie testy mozna do niego zastosowac, moze
ktos ma jakis ew. pomysl?
Eee, IMO w praktyce to do pliku zapisujesz jakąś sieczkę.
Sprawdzić możesz to bardzo prosto przy pomocy np. przeglądarki
WWW. Na przykład:

String file = "test.html"
String text = "ĄĆĘŁŃÓŚŻŹ ąćęłńóśżź";
String prefix = "<html><head><title></title></head><body>";
String suffix = "</body></html>";

Writer out = new FileWriter(file);
out.write(prefix);

out.write("<p>");
out.write(text);
out.write("</p>");

byte[] bytes = text.getBytes("iso-8859-2");
text = new String(bytes, "windows-1250");

out.write("<p>");
out.write(text);
out.write("</p>");

out.write(suffix);
out.close();

(jest to przeróbka Twojego programu), a potem otwierasz
przeglądarką utworzony plik i ręcznie zmieniasz w niej
kodowanie tekstu: iso-8859-2 i windows-1250. Wtedy będziesz
w stanie ocenić co jest co.

Niemniej uważam, że wyświetli Ci się jakaś kasza. Jeśli
chcesz zapisać dane do pliku w jakimś konkretnym kodowaniu,
to raczej użyj OutputStreamWritera, np:

Writer out = new OutputStreamWriter(
new FileOutputStream(file), "iso-8859-2"
);

albo FileOutputStream:

OutputStream out = new FileOutputStream(file);
out.write(text.getBytes("iso-8859-2"));
out.write(text.getBytes("windows-1250"));

To co Ty zrobiłeś tutaj:

1: bity = napis.getBytes("iso-8859-2");
2: String napis2 = new String(bity,"CP1250" );

to 1: konwersja z utf-16 na ciąg bajtów w iso-8859-2,
a potem 2: konwersja ciągu bajtów na utf-16, ALE przy
zinterpretowaniu ich jako ciągu bajtów w windows-1250,
a nie iso-8859-2, tak jak to jest w rzeczywistości.
Piotrek "Alchemik"
2005-05-31 15:20:41 UTC
Permalink
cromax wrote:
<ciach>

Wpisalem ten programik, przejrzalem stronke w jakims programie i wyglada na to,
ze pierwszy zapis jest dokonany w formacie cp1250, za to za drugim razem, tak
jako powinien byc win1250 wyswietla mi to wszystko jako iso (zmieniajac
kodowanie: dla windows pierwsza linijka jest ok, druga sieczka, jak zmienie na
iso to pierwsza sieczka a druga jest ok, wiec chyba powinno byc odwrotnie ;)
Ale wiem juz za czyma patrzec
Post by cromax
Niemniej uważam, że wyświetli Ci się jakaś kasza. Jeśli
chcesz zapisać dane do pliku w jakimś konkretnym kodowaniu,
Writer out = new OutputStreamWriter(
new FileOutputStream(file), "iso-8859-2"
);
OutputStream out = new FileOutputStream(file);
out.write(text.getBytes("iso-8859-2"));
out.write(text.getBytes("windows-1250"));
Zaraz popatrze co to jest i powiem co mi wyswietla, ok?
Dzieki z gory
--
Piotrek "Alchemik" gg:183441 kilobyte[at]tlen[dot]pl
/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\
"I am not in this world to live up to other people's expectations, nor
do I feel that the world must live up to mine." /Fritz Perls
Piotrek "Alchemik"
2005-05-31 15:54:28 UTC
Permalink
cromax wrote:
<ciach>

Zmodyfikowalem ten moj programik, tak jak napisales:
String file = "test.html";
String file2 = "iso.html";
String text = "ĄĆĘŁŃÓŚŻŹ ąćęłńóśżź";
String prefix = "<html><head><title></title></head><body>";
String suffix = "</body></html>";

Writer out = new OutputStreamWriter( new FileOutputStream(file),
"windows-1250"); BufferedReader in = new BufferedReader(new
InputStreamReader(new FileInputStream(file2), "iso-8859-2"));

out.write(prefix);

while ((text = in.readLine()) !=null ){
out.write("<p>");
out.write(text);
out.write("</p>");
}
out.write(suffix);
out.close();

Z tego co widze, jezeli plik iso.html jest w formacie iso (a jest, bo specjalnie
go przerabialem) to plik wyjsciowy test.html jest w formacie windos-1250
Dziekuje za pomoc
Moze komus sie to przyda...

--Piotrek "Alchemik" gg:183441 kilobyte[at]tlen[dot]pl
/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\/o|o\
"I am not in this world to live up to other people's expectations, nor
do I feel that the world must live up to mine." /Fritz Perls

Mariusz G
2005-05-31 07:27:29 UTC
Permalink
Radze sie zainteresowac klasami:
java.io.InputStreamReader
java.io.OutputStreamWriter
Loading...