21

Odp: Standardy kodowania znaków

Lepiej udaj się w to miejsce:
https://www.ritlabs.com/bt/

jak wypełnisz raport daj znać na forum a nóż widelec ktoś jeszcze potwierdzi i doda notkę

22

Odp: Standardy kodowania znaków

lazik napisał/a:

We wcześniejszych wersjach działało to w porządku, ale niedawno 3-4 wersje beta coś się w tym mechanizmie spsuło.

Nie odnotowałem zadnej takiej zmiany. Listy zapisane w 8bitach bez deklaracji kodowej zawsze tak były wyświetlane.

23

Odp: Standardy kodowania znaków

Prozac napisał/a:

Nie rozumiem zatem skąd te krzaki

Przecież ci napisałem - polskie litery w treści są zakodowane w ISO 8859-2, a brak im deklaracji kodowej. Oczywiście to jest moje przypuszczenie - nie znam tych listów o których piszesz.

24

Odp: Standardy kodowania znaków

krzychu napisał/a:

Przecież ci napisałem - polskie litery w treści są zakodowane w ISO 8859-2, a brak im deklaracji kodowej. Oczywiście to jest moje przypuszczenie - nie znam tych listów o których piszesz.

Jestem przekonany, że te same powiadomienia wcześniej były wyświetlane poprawnie.
Pomyślałem, że wyeksportuję przykładową wiadomość, spakuję ją i zapodam Wam linka. Zobaczycie sami jak to wygląda.
http://www.dreamland.neostrada.pl/kodow … domosc.zip

25

Odp: Standardy kodowania znaków

Wszystko by było Krzychu w porządku jeżeli nawet przy ustawionym ISO-8859-2 dla wiadomości bez deklaracji  znaki byłyby poprawnie wyświetlane. Teraz praktyka jest mniej więcej taka:
1. Wiadomośc jest w ISO, brak deklaracji, ustawione mamy wyświetlanie ISO
2. Zmieniamy na utf
3. zmieniamy na iso
4. przechodzimy do innej wiadomości i wracamy

tak mniej więcej jest stosowana przeze mnie technika by zobaczyć poprawne literki. Wcześniej nie trzeba było jakby odświeżać wiadomości i samego kodowania. Jestem tego na 99,9% pewien.

26

Odp: Standardy kodowania znaków

Dyskusja na temat błędów kodowania trwa wśród użytkowników The Bat! od dość dawna, szczególnie dotyczy to alfabetów takich jak grecki lub cyrylica. Wiąże się to zapewne z wprowadzeniem Unicode na szerszą skalę. Mam nadzieję, że autorzy umożliwią wymuszanie domyślnego kodowania nawet wtedy, gdy wiadomość nie zawiera informacji na ten temat, czyli gdy jest błędnie sformatowana.

Na tym forum podobny problem pojawił się w innym wątku i również dotyczył wiadomości rozsyłanych przez serwer ze strony WWW. Jeśli są to wiadomości czysto tekstowe, czyli tak jak w przypadku omawianym tutaj, problem można obejść stosunkowo prosto za pomocą jednego filtru poczty przychodzącej. Powinien on reagować na charakterystyczne dane w błędnie sformatowanej wiadomości, np. adres nadawcy, temat, lub nawet brak wpisu w polu Content-Type. Filtr wykonuje kilka operacji charakterystycznych dla "poprawiania" odebranych wiadomości:

1. Eksport wiadomości do pliku w formacie skrzynki uniksowej (np. do D:\Dane\unix_msg.mbx).

2. Eksport wiadomości do zwykłego pliku tekstowego (np. D:\Dane\message.msg) według specjalnego szablonu (z zastąpieniem pliku o takiej samej nazwie, jeśli już taki plik istnieje). Istotą tego szablonu jest wykorzystanie wcześniej wyeksportowanego pliku unix_msg.mbx jako źródła do modyfikacji. W tym przypadku modyfikacja polega na podziale nagłówka, dopisaniu brakujących wierszy "kodujących" i następnie reszty wiadomości. Oto przykładowy szablon dla tej operacji ekportu:

%_OldMsg(%Put="D:\Dane\unix_msg.mbx")%-
%SetPattRegExp="(?ismU)(.*)(^Subject:\s*.*\n)(\w.*?)"%RegexpBlindMatch(%_OldMsg)%-
%SubPatt(1)%SubPatt(2)MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
%SubPatt(3)%-

3. Import wiadomości z pliku D:\Dane\message.msg za pomocą wiersza poleceń, czyli uruchomienie w filtrze programu zewnętrznego, którym jest The Bat!, z następującym wierszem poleceń (warto także włączyć opcję czekania na zakończenie):

C:\Program Files\The Bat!\thebat.exe /IMPORTU="Nazwa konta";F="Nazwa folderu";X;W;I="D:\Dane\message.msg"

4. Ostatnią operacją w filtrze jest usunięcie oryginalnej wiadomości.

Działa to bez problemu, gdyby były jakieś niejasności - chętnie pomogę w ich wyjaśnieniu.

P.S. Dodam jeszcze drobne wyjaśnienie na temat zasady działania filtru do "poprawiania" przychodzących wiadomości. Jego najważniejszą częścią jest druga operacja eksportu danych do pliku (tutaj D:\Dane\message.msg), a w niej - szablon eksportu. W szablonie wykorzystano wyrażenie regularne dzielące treść pobraną z pliku, który powstał w wyniku wcześniejszej operacji eksportu wiadomości w formacie skrzynki uniksowej. Jako punkt podziału wiadomości wybrałem pole Subject w jej nagłówku, lecz równie dobrze może być to inne ściśle określone miejsce w źródłowej postaci danych. Zależy to od konkretnej potrzeby, np. gdy zamiast dodania pól określających kodowanie chcemy zmienić wartość jakiegoś pola nagłówka, wtedy jako punkt podziału trzeba przyjąć pole, które ma być zmieniane. W wyrażeniu regularnym (?ismU)(.*)(^Subject:\s*.*\n)(\w.*?) definiującym podział mamy zatem trzy podwyrażenia: (.*) oznacza dane od początku wiadomości do punktu podziału, (^Subject:\s*.*\n) oznacza wiersz, będący punktem podziału, a (\w.*?) pozostałą część wiadomości. Wydzielone (i zmodyfikowane w razie potrzeby) części wiadomości są następnie wpisywane do pliku za pomocą makr %SubPatt(n). Ważne jest przy tym zachowanie odpowiedniej kolejności poszczególnych elementów, szczególnie gdy między nie wstawia się dodatkowe dane (np. wiersze definiujące kodowanie).

27

Odp: Standardy kodowania znaków

Świetnie. To właśnie jest zaleta konfigurowalnego i bogatego w różne ciekawe funkcje programu. Zawsze można coś zaradzić.
Zaraz utworzę nowy filtr z zaproponowanymi akcjami.
Dzięki Zygmunt za poradę.

28 (edytowany przez Prozac 2005-11-16 16:18:00)

Odp: Standardy kodowania znaków

Wybaczcie kolejny post z rzędu, ale chciałem by wszyscy biorący udział w wątku zostali poinformowani o nowej wiadomości.
Utworzyłem filtr zgodnie z poradą Zygmunta.
Na razie nie mam możliwości sprawdzenia jego działania, bowiem znowu padło mi coś w module wysyłającym powiadomienia na forum. Próbowałem importu takich "wybrakowanych" wiadomości, ale filtracja działa tylko na wiadomości odbierane z serwera, a nie importowane z pliku, więc nie zadziałało.
Wysłałem jednak na próbę list z innego konta do samego siebie i w temacie zawarłem frazę, będącą  kryterium dla powyższego filtra. Zauważyłem, że wtedy, że w pliku unix_msg.mbx zapisała się treść tej wiadomości.
Wiadomość została odebrana prawidłowo, jednak po całej operacji plik message.msg został usunięty. Czy tak to ma wyglądać, że ma on być usuwany ?

29

Odp: Standardy kodowania znaków

Filtr powinien działać także na wiadomości zaimportowane, co wypróbowałem na przykładzie załączonym wcześniej przez Ciebie. Zaimportuj wiadomość do jakiegoś folderu i przefiltruj ten folder ręcznie - wtedy zobaczysz wynik. Zgodnie z opisem filtru, w pliku "unix_msg.mbx" będzie cała pierwotna wiadomość, a plik "message.msg" zawierający wiadomość poprawioną zostanie usunięty przez wiersz poleceń w trzeciej operacji (jest za to odpowiedzialny parametr "W" w tym wierszu).

Chcąc usuwać także plik "unix_msg.mbx", musisz posłużyć się dodatkowym programem zewnętrznym typu .bat, który wywołasz z poziomu filtru (będzie to już jego piąta operacja). Taki program wsadowy powinien zawierać dwa wiersze:

DEL "<Pełna ścieżka do pliku>\unix_msg.mbx"
EXIT

Usuwanie pliku "unix_msg.mbx" nie jest jednak konieczne (chyba że są istotne powody, dla których chcesz go usuwać). Jego zawartość zmienia się po każdym zadziałaniu filtru i w niczym nie przeszkadza.

30

Odp: Standardy kodowania znaków

Teraz rozumiem.
Myślałem, że wiersz poleceń usuwa tylko oryginalną wiadomość, jaka dociera do programu. Jakby w locie, a nie sam plik, do którego zapisywana jest treść.
W sumie to usuwanie tego pliku, podobnie jak pliku unix_msg.mbx, również nie jest konieczne, jeśli we właściwościach eksportu wiadomości do pliku wybierze się opcję 'Zastąp istniejący plik'. Mam nadzieję, że dobrze rozumuję smile
Rzeczywiście, ręczne przefiltrowanie zaimportowanej wiadomości pokazało, że filtr działa znakomicie.
Całe szczęście, że te powiadomienia są w postaci tekstowej, a nie html i można sobie w ten sposób poradzić z problemem.
Ja jeszcze raz dziękuję za dyskusję nad problemem, życzę sobie i Wam, żeby projekt TheBat! był nadal rozwijany i dostarczał nam wiele przyjemności.