![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 23.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem. Zainstalowałem system help desk - Trellis Desk. Uruchomiłem rejestrowanie wiadomości e-mail poprzez pipe.php. Samo przechwytywanie działa dobrze, ale mam duży problem ze zdekodowaniem wiadomości. Wiadomość może być wysłana jako tekst / html / tekst i html, skrypt sam to rozpoznaje, usuwa tagi html, ale mam problem ze zdekodowaniem polskich znaczków, które mogą być jako unicode, iso, win itp. Oryginalnie w skrypcie, za tą metodę jest odpowiedzialna ta linia: $email['message'] = $ifthd->sanitize_data( utf8_encode( decode_ISO88591( imap_utf8( $email['message'] ) ) ) ); Jednak znaczki wyglądają albo tak: fêó¿¼€ albo tak: óęóś€śą€żóóęęńę Jak tą linijkę przerobić aby polskie znaczki dobrze były konwertowane? Proszę o pomoc, bo sam sobie nie poradzę! Pozdrawiam Grzegorz |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A co sie dzieje jak dasz tak:
$email['message'] = $ifthd->sanitize_data($email['message']); zmienia się cos ? Przydałoby się wiedziec w jakim kodowaniu jest zmienna $email['message'] jakie masz nagłówki w mailu no i w jakim kodowaniu otwierasz maila (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Słowem wtawiając wszystko wszędzie na UTF-8 powinno działać. Ten post edytował Black-Berry 6.12.2008, 15:29:47 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 23.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Jeśli wiadomość jest w UTF to Twój kod powinien poprawnie zwrócić wiadomość. Niestety jak jest w iso to zawsze będą krzaki. Zrobiłem sobie log po każdej funkcji, która jest w linii dekodującej i iso nigdy nie jest poprawne. System wyświetla strony w UTF, więc powinna być konwersja na UTF. Myślę, że z wyborem kodowanie z maila bym sobie poradził, pytanie tylko jak to przekonwertować, moja wiedza na temat PHP ogranicza się do przekopiowania kodu ewentualnie z dużą pomocą helpa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam Grzegorz |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W email headers powinna byc tez taka linijka: "Content-Type: text/html; charset=utf-8\n";
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 23.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
OK, to jeśli będzie UTF to sobie poradze, a jeśli będzie iso to jak mam to przekonwertować?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mozliwe ze problem tkwi w linijce decode_ISO88591
Polskie iso to chyba decode_ISO88592 z tego co pamietam |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 23.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
decode_ISO88591 to funkcja w pliku pipe.php, która ma wpisane znaki, które trzeba podmienić w standardie ISO 88591, nie ma funkcji decode_ISO88592 w tym pliku ani wbudowanej w php. Ktoś po prostu tą funkcję ręcznie napisał. Czy to oznacza, że ja muszę taką funkcję napisać dla 88592 i win1250?? Pozdrawiam |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wklej tą funkcję.
Ten post edytował Black-Berry 8.12.2008, 12:06:10 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 23.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Oto treść funkcji:
function decode_ISO88591( $string ) { $string = str_replace( "=\r\n", "", $string ); $string = str_replace("=?iso-8859-1?q?","",$string); $string = str_replace("=?iso-8859-1?Q?","",$string); $string = str_replace("?=","",$string); $charHex = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" ); for( $z=0; $z < sizeof($charHex); $z++ ) { for( $i=0; $i< sizeof($charHex); $i++ ) { $string = str_replace( ("=" .( $charHex[$z].$charHex[$i] ) ), chr( hexdec( $charHex[$z].$charHex[$i]) ), $string ); } } return($string); } |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
no a jak podmienisz iso-8859-1 na iso-8859-2? to nic nie daje?
|
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Wyszukiwarka gryzie?!
http://forum.php.pl/index.php?showtopic=80...mail++kodowanie |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 22:23 |