Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak polskich znaków na obrazku
Forum PHP.pl > Forum > PHP
KR2615
Witam
Stworzyłem sobie funkcje która ma mi przygotować obrazek z podpisem. Niestety zamiast polskich znaków mam krzaczki. Próbowałem wielu rozwiązań a mianowicie:

1. Użyłem iconv żeby skonwertować stringa.
2. Sprawdziłem kodowanie baz danych, na wszelki wypadek zrobiłem ALTER DATABASE, ALTER TABLE i SET names UTF-8 zaraz po połączeniu.
3. Wywołałem funkcję z parametrami "z ręki" tj. przygotuj_obrazek(żęćźłó); zamiast danych pobranych z mySQLa.
4. Sprawdziłem kodowanie plików .php i na obu (głównym oraz includowanym) jest UTF-8 bez DOM.

Co jeszcze mogę robić nie tak? Proszę Was o pomoc!
Pyton_000
pokazać kod. Może czcionka nie obsługuje ogonków smile.gif
KR2615
Trochę przydługawa ta funkcja ale nieco ją uproszczę
  1. <?php
  2. include("/var/www/inc.php");
  3. dbconn();
  4.  
  5. function przybotuj_obrazek($sender, $title, $iban, $value = "400,00", $odbiorca = "Nazwa") {
  6.  
  7. header("Content-type: image/png");
  8. $font = SITEPATH.'courbd.ttf';
  9. $image = imagecreatefrompng(SITEPATH.'/images/przelew-form.png');
  10. $color = imagecolorallocate($image, 0, 0, 0); // czarny
  11. //Pozycje kolejnych wierszy w pikselach
  12. $l1=46;$l2=91;$l3=135;$l4=179;$l5=227;$l6=272;$l7=317;$l8=362;$l9=407;
  13.  
  14. // Pierwsze dwie linijki - $odbiorca (max 27 znaków)
  15. $char=0;
  16. while($char < 27) {
  17. imagettftext($image, 20, 0, 367+26*$char, $l1, $color, $font, $odbiorca[$char]);
  18. $char++;
  19. }
  20. if(strlen($odbiorca) > 27) {
  21. $char=0;
  22. while($char < 27) {
  23. imagettftext($image, 20, 0, 367+26*$char, $l2, $color, $font, $odbiorca[$char+27]);
  24. $char++;
  25. }
  26. }
  27.  
  28. //dalsze umieszczanie tekstu w analogiczny sposób
  29.  
  30. //Finalne pokazanie obrazka
  31. imagepng($image,NULL,9);
  32. imagedestroy($image);
  33.  
  34. }
  35. ?>
trueblue
Ustaw wewnętrzne kodowanie na UTF-8.
Znaki wycinaj za pomocą: http://php.net/manual/en/function.mb-substr.php, nie odwołując się do stringa jak do tablicy.
Podobnie licz długość stringu - z pomocą funkcji z tej rodziny.
KR2615
Użycie mb_substr pomogło. Dzięki wielkie! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.