Wpisy otagowane ‘UTF-8’

Problemy z funkcjami.

czwartek, 15 Wrzesień 2011

Podczas niedawnych prac nad kursem dotyczącym integracji systemów płatności internetowych ze stroną WWW natknąłem się na wadliwe działanie funkcji htmlentities(). Problem polegał na tym, że ciągi znaków zakodowane w UTF-8 pomimo przesłania do funkcji informacji o kodowaniu, miały zamieniane litery ‘ó’ oraz ‘Ó’ na encje ‘ó’ oraz ‘Ó’. Sprawa wygląda dosyć dziwnie, bo szukając informacji o tym błędzie natknąłem się na kilka dyskusji i podobne problemy napotkali też inni programiści, ale niekoniecznie dotyczyły one tych samych liter.

Rozwiązanie problemu jest oczywiście dosyć proste. Należy encje zamienić z powrotem na odpowiedni litery. Należy przy tym pamiętać, by plik z kodem był również zakodowany w UTF-8.

<?php
	$value=htmlentities($value, ENT_COMPAT, 'UTF-8');
	$value=str_replace(array('&oacute;', '&Oacute;'), array('ó', 'Ó'), $value);
?>

Funkcja str_replace() zamienia w zmiennej $value fragmenty z tablicy, która jest pierwszym argumentem tej funkcji na elementy tablicy, która jest argumentem drugim.

Z kolei wczoraj, konfigurując portal pewnej szkoły zauważyłem, że w pewnych miejscach polskie znaki również nie wyświetlają się poprawnie. Przeglądarka poprawnie interpretowała kodowanie strony, również w bazie danych wszystkie napisy były zapisane prawidłowo. Po bliższym przyjrzeniu się problemowi, winowajcą okazała się funkcja strtolower() zmieniająca wszystkie znaki na małe. Funkcja ta również nie radziła sobie z kodowaniem UTF-8. W tym przypadku jednak znalazł się zamiennik: funkcja mb_strtolower(). Jej użycie dla tekstów kodowanych w UTF-8 wygląda następująco

<?php
	$tytul=mb_strtolower($tytul, 'UTF-8');
?>


W UTF-8 możesz nawet…

piątek, 22 Lipiec 2011

UTF-8 stał się standardem kodowania znaków na stronie. Wsparcie wielu programów i duże możliwości to znaczące atuty tego kodowania. Ale czy wszyscy z nich korzystają? Przyznam się, że sam rzadko używam wszystkich dobrodziejstw UTF-8, ale postanowiłem to zmienić. Przy okazji dzielę się tym z Tobą.

Czym zatem są te dobrodziejstwa? To możliwość używania znaków, które mogą bardzo ułatwić pisanie różnych treści. Jednak należy uważać na czcionki, których używamy i przeglądarki, chociaż z tymi drugimi nie powinno być raczej problemów. Natomiast w przypadku używania nietypowych krojów pisma, należy uważnie przetestować efekt końcowy. Podane tu sposoby wstawiania znaków odnoszą się do pisania w systemie Windows. Podczas pisania w niektórych programach w tym w przeglądarkach internetowych może się okazać, że niektóre kody znaków są skrótami różnych funkcji tych programów np. wpisanie ” uruchamia przejście do wcześniejszej strony w Firefoxie. Taki znak należy wpisać w innym programie i skopiować we właściwe miejsce.

W większości przypadków twórcy stron w miejsce myślnika wstawiają znak „minus”. UTF-8 pozwala na wpisanie myślników o dwóch różnych długościach: — dłuższego i – krótszego. Przy tym krótszy jest zazwyczaj dłuższy od znaku „minus”. Dłuższy myślnik wpisujemy kombinacją klawiszy Alt+0151. Używamy przy tym lewego przycisku Alt i klawiatury numerycznej. Krótki myślnik to Alt+0150, wielokropek to Alt+0133, cudzysłów podwójny otwierający to Alt+0132, cudzysłów podwójny zamykający to Alt+0148, cudzysłów pojedynczy otwierający to Alt+0130, cudzysłów pojedynczy zamykający to Alt+0146, cudzysłów francuski otwierający (przydatny to umieszczania cytatu w cytacie) to Alt+0171, a cudzysłów francuski zamykający to Alt+0187. Jest jeszcze spacja, której nie można przełamać wpisuje się ją w postaci encji: &#8199; – przydatna za np. spójnikami, które nie powinny znajdować się na końcu linii. Całość przedstawia poniższa tabelka.

kod efekt
Alt+0151
Alt+0150
Alt+0133
Alt+0132
Alt+0148
Alt+0130
Alt+0146
Alt+0171 «
Alt+0187 »
&#8199; niełamliwa spacja