Article View: pl.comp.lang.php
Article #341Re: Konwersja znakow z roznym kodowaniem
From: Jacek Czapla
Date: Mon, 20 Aug 2001 10:26
Date: Mon, 20 Aug 2001 10:26
69 lines
3151 bytes
3151 bytes
> Mam problem z roznymi kodowaniami
> Tworze aplikacje - klienta poczty e-mail.
> Jako domyslne na stronie (w naglowkach META) mam standard kodowania
> iso-8859-1. Niestety, poczta przychodzi w najrozniejszych kodowaniach
> (najczesciej to windows-1250 i iso-8859-2). Wyswietlana wiadomosc zamienia
> sie w "niezla kaszanke" Jak tego uniknac?
Witam.
Przerobiony (skrocony) przyklad z jaiejs gazetki (chyba Linux+)
Funkcja pobiera lancuch zankow i max. liczbe liter w lancuchu (przydatne
jesli lancuch ma byc zapisany pozniej do bazy danych)
Wywolanie:
$new_string=konwertuj($old_string, $max_chars);
Na poczatku na podstawie tablicy kodow ASCII generowany jest string
($cp_polskie) zawierajacy literki w WIN 1250 (tylko te, ktorych kody ASCII
roznia sie od kodowania w ISO-8859-2),
$cp_kody = array (185,159,156,165,143,140);
$ten = current ($cp_kody);
while ($ten) {
$cp_polskie .= chr ($ten);
$ten = next ($cp_kody);
}
potem tworzony jest lancuch z odpowiednikami literek w ISO-8859-2 (w tej
samej kolejnosci co kody w WIN 1250)
$iso_polskie = "?ą?Ě?|";
i wlasciwa funkcja podmieniajaca w zmiennej $lancuch znaki z $cp_polskie na
odpowiedajace mu (wg kolejnosci wystepowania w lancuchu) znaki z
$iso_polskie
$lancuch = strtr ($lancuch, $cp_polskie, $iso_polskie);
a potem juz tylko sprawdzenie dlugosci, ewentualne przyciecie i zwrocenie
zmienionego lancucha.
Calosc wyglada tak:
function konwertuj ($lancuch, $maxliter)
$cp_kody = array (185,159,156,165,143,140);
$ten = current ($cp_kody);
while ($ten) {
$cp_polskie .= chr ($ten);
$ten = next ($cp_kody);
}
$iso_polskie = "?ą?Ě?|";
/* konwersja liter */
$lancuch = strtr ($lancuch, $cp_polskie, $iso_polskie);
$dlugosc = strlen ($lancuch);
if ($dlugosc > $maxliter) {
$drugi = substr ($lancuch,0,$maxliter);
return $drugi;
}
return $lancuch;
}
Funkcja ta zamienia znaki z WIN 1250 na IS)-8859-2
Pozdrowienia
------------------------------------------------------------
Jacek Czapla jczapla@lctt.pol.lublin.pl
------------------------------------------------------------
Technical Details
Message-ID:
<9lqouh$2tl$1@news.lublin.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!fargo.cgs.poznan.pl!news.internetia.pl!news.nask.pl!lublin.pl!news.lublin.pl!not-for-mailReferences:
<9lqmsj$s88$1@news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!fargo.cgs.poznan.pl!news.internetia.pl!news.nask.pl!lublin.pl!news.lublin.pl!not-for-mail From: "Jacek Czapla" <jczapla@lctt.pol.lublin.pl> Newsgroups: pl.comp.lang.php Subject: Re: Konwersja znakow z roznym kodowaniem Date: Mon, 20 Aug 2001 12:26:58 +0200 Organization: lubman Lines: 71 Message-ID: <9lqouh$2tl$1@news.lublin.pl> References: <9lqmsj$s88$1@news.tpi.pl> NNTP-Posting-Host: automat.pol.lublin.pl X-Trace: news.lublin.pl 998303505 2997 212.182.17.61 (20 Aug 2001 10:31:45 GMT) X-Complaints-To: abuse@news.lublin.pl NNTP-Posting-Date: Mon, 20 Aug 2001 10:31:45 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit