plik playlisty PLS z javy - kodowanie/encoding

0

Witam!

W jakis sposób konwertować String z javy, aby można było zapisać je w formacie pliku PLS?
Zaznaczę, że problem polega tutaj na polskich znakach w ścieżkach do plików / tytułach.

Z tego co wyczytałem, powinno być to kodowanie win1250. Niestety

ansiStr=new String(utf.getBytes("UTF-8"),"windows-1250") 

nie spełnia zadania. W pliku pojawiają się krzaki itd itp, to samo się dzieje ze ścieżką kiedy taki plik pls uruchomię w AIMP'ie.

W jaki sposób kodować i zapisywać plik w "ANSI"

0

dobra, tradycyjnie sam sobie odpowiedzi udzielę.

zapis do pliku:

  BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f),"Windows-1250"));

później już normalnie out.write....

0

To co ty zrobiles znaczy: wez string (zakodowany w utf16 bo tak java trzyma swoje stringi), zdekoduj go na reprezentacje bajtow w utf8, a z tego utworz mi string jakby to byly bajty w windows-1250, i wewnetrznie znowu zakoduj do utf16 (w koncu tworzysz natywny javowy string). Nie ma logiki. Aby sprawdzic:
System.out.println(new String('mućka'.getBytes("UTF-8"),"windows-1250"));
rowniez pokazuje krzaki, nawet nie trzeba zapisac do pliku.

Zrob po prostu:
byte[] cp1250Bytes = string.getBytes("windows-1250");
i te bajty zapisujesz do pliku. Przy odczycie musisz zrobic (majac juz te bajty):
String s = new String(bytes, "windows-1250");
i otrzymasz string.

Nie mam zielonego pojecia jak wyglada format PLS, wiem tylko ze zle kodujesz / dekodujesz, wiec to co napisalem moze nie starczyc aby rozwiazac problem. Ale bedziesz blizej.

Jesli PLS to format tekstowy to zadzialaja Writery, ale jesli to jakis binarny, ktorego tylko fragmenty sa stringami kodowanymi w cp-1250, to moze byc ciezko.
Swoja droga, dziwny mi sie wydaje ten format - co robia osoby ktore uzywaja znakow ktore nie sa w cp-1250? Maja krzaki, czy ten PLS jakos umie przechowywac wewnetrznie kodowanie jakie jest uzywane?

0
  1. nie, pls nie trzyma kodowania
  2. kodowanie musi być użyte systemowe, jako że zapisujesz w pliku ścieżki do muzy na dysku/adresy internetowe.
  3. playlista już działa poprawnie

Z pewnością masz rację, jeżeli chodzi tamtą pierwszą próbę konwersji. Nigdy nie lubiłem tego zagadnienia i zawsze się w nim gubiłem.
Btw jak dobrać się do systemowego kodowania ???? System.getProperty(file.encoding) zwraca mi utf8 dla windowsa a powinno być własnie win1250...

0

file.encoding to dobry klucz. Zaloze sie ze uruchamiasz to w jakims IDE (eclipse?) ktory to zmienia. Uruchom w linii polecen, i napisz czy jest nadal utf8.

Swoja droga kiepskie to PLS, poniewaz nie moge mojej listy z polskimi znakami dac koledze ktory uzywa utf8 na innym kompie, bo on zobaczy krzaki. Powinna byc jakas mozliwosc zeby zrobic to porzadnie.

0

Masz racje, NB zmieniał cp1250 na utf.

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