Ernest Syska

Ernest Syska Przedsiębiorca

Temat: Jak funkcją php zmienić format do ansi

Słuchajcie

Borykam się z pewnie dość łatwym problemem ale nie mogę znaleźć w necie rozwiązania.

Chce wysyłać maile ze strony www.

Z bazy wychodzi mi tekst w kodowaniu utf-8.'
Kiedy używam sobie biblioteki htmlMimeMail5 to wszystko fajnie, wysyła się wszystko jak należy ale znaczki oczywiście nie do końca.

Szablon maila mam przekodowany do ANSI więc wysyła się czysto z polskim znakami.
Treść maila generowana jest z bazy i próba jej wysyłki kończy się krzakami.

Jak skonwertować za pomocą php zmienną zawierającą tekst w utf-8 na tekst w ansi?

Bardzo proszę o pomoc.

pozdrawiam,
ErnestErnest Syska edytował(a) ten post dnia 06.03.10 o godzinie 14:58

Temat: Jak funkcją php zmienić format do ansi

1. Utwórz tablicę asocjacyjną, gdzie nazwa każdej komórki jest kodem UTF a wartość w ANSI.

2. Użyj funkcji: $txtansi=strtr($txtutf, $tablica);

To tak w skrócie, resztę sobie na pewno dopiszesz :)
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Jak funkcją php zmienić format do ansi

hmm rozumiem ze chcesz pozbyc sie z tekstu zakodowanego w utf8 wszystkich znakow z wyjatkiem znakow alfabetu lacinskiego tak?
jezeli tak to hmm, nie wiem czy w iconvie czegos od tego nie ma, zajrzyj do kodu metodki: Doctrine_Inflector::unaccent z Doctrine ORM, robi dokladnie to czyli wywala wszystkie ogonki z tekstu zakodowanego w utf8
Ernest Syska

Ernest Syska Przedsiębiorca

Temat: Jak funkcją php zmienić format do ansi

dokladnie to chce aby polskie ą zamieniło się w 5 znakowy kodzik zrozumialy dla php jak sądze aby mógł to wysłać w świat (no a potem zeby zrozumial to klient poczty).

Sam sie dziwie ze ludzie to wysylają z polskim znakami bez problemów. W każdym newsletterze przeciez to jest.
Jak oni to robią, tablice asocjacyjne? come on, nie ma nic prostszego?

Pozdrawiam,
ES
Stanisław B.

Stanisław B. VMware Certified
Inctructor, Red Hat
Certified Architect

Temat: Jak funkcją php zmienić format do ansi

Ja zawsze z powodzeniem wykorzystywałem to takich operacji iconv'a
http://pl2.php.net/manual/en/function.iconv.php

konto usunięte

Temat: Jak funkcją php zmienić format do ansi

http://php.net/manual/pl/book.iconv.php
--Edit--
Ups, ktoś mnie uprzedził.Marcin Gronowski edytował(a) ten post dnia 06.03.10 o godzinie 15:48
Ernest Syska

Ernest Syska Przedsiębiorca

Temat: Jak funkcją php zmienić format do ansi

Wpisałem w kod:

$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);

I jest lepiej, tzn, gdy spotyka polską czcionę to dopasowuje najbliższą angielską.
Ale dalej nie wiem jak wyrzucić w mailu dokladnie polski znaczek.

Jaką opcyjkę powinienem ustawić?

Pozdrawiam,

konto usunięte

Temat: Jak funkcją php zmienić format do ansi

Ja bym jeszcze sprobowal przed iconv(...) (najlepiej na poczatku skryptu) uruchomic komende:

setlocale(LC_CTYPE, 'pl_PL.UTF-8');
Ernest Syska

Ernest Syska Przedsiębiorca

Temat: Jak funkcją php zmienić format do ansi

no changes....
Bartłomiej Ogryczak

Bartłomiej Ogryczak Backend Developer @
Layar

Temat: Jak funkcją php zmienić format do ansi

Ernest Syska:
Wpisałem w kod:

$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);

ASCII to US-ASCII, wyłącznie angielskie znaki.

Przypuszczam, że pisząc "ANSI" w kontekscie polskich znaków, masz na myśli Windows-1250.

$title = iconv('UTF-8', 'CP1250//TRANSLIT', $title);
Ernest Syska

Ernest Syska Przedsiębiorca

Temat: Jak funkcją php zmienić format do ansi

Tak tak, ansi to jakiś ślad po przeglądzie rzutników :)

No wiec ascii oczywiscie.

I teraz - gdy wpisałem Twoj kod, php łamie mi polskie słowko w polowie - w miejscu polskiej czcionki.

Coś nie tak...

?

ES

konto usunięte

Temat: Jak funkcją php zmienić format do ansi

w takim razie z innej strony. Przed pobraniem kontentu z bazy:

$db->query("SET NAMES 'cp1250'");


i iconv nie powinno byc potrzebnePaweł P. edytował(a) ten post dnia 06.03.10 o godzinie 18:12

konto usunięte

Temat: Jak funkcją php zmienić format do ansi

EDIT: delPaweł P. edytował(a) ten post dnia 06.03.10 o godzinie 18:23

Temat: Jak funkcją php zmienić format do ansi

Ech... Kombinowanie. A odpowiednią tablicę dla funkcji strtr już dawno byście napisali (lub znaleźli w sieci) :)

konto usunięte

Temat: Jak funkcją php zmienić format do ansi

Andrzej K.:
Ech... Kombinowanie. A odpowiednią tablicę dla funkcji strtr już dawno byście napisali (lub znaleźli w sieci) :)

:-)
$tekst = strtr($tekst, "\xa6\xa1\xaf\xca\xc6\xac\xd3\xa3\xb6\xb1\xbf\xea\xe6\xbc\xf3\xb3", "\x8c\xa5\xaf\xca\xc6\x8f\xd3\xa3\x9c\xb9\xbf\xea\xe6\x9f\xf3\xb3");

to ogonki z ISO-8859-2 na CP,
utf-8 - http://www.unikod.pl/ogonki.htmlPaweł P. edytował(a) ten post dnia 06.03.10 o godzinie 18:33

konto usunięte

Temat: Jak funkcją php zmienić format do ansi

Możesz jeszcze spróbować tak: mb_convert_encoding($string, "HTML-ENTITIES", 'UTF-8');

Jak się nie sprawdzi to masz trochę kodowań do sprawdzenia: http://pl2.php.net/manual/en/mbstring.encodings.php
Ernest Syska

Ernest Syska Przedsiębiorca

Temat: Jak funkcją php zmienić format do ansi

dzieki, zostałem przy iconv i jestem zadowolny. pozdrowienia!
Rafał Toboła

Rafał Toboła Razor s.c. -
współwłaściciel

Temat: Jak funkcją php zmienić format do ansi

Dlaczego nie dodać po prostu w nagłówkach maila: ,,Content-type: text/html; charset=utf-8'' i nie wysyłać bez konwersji?



Wyślij zaproszenie do