Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z UTF8
Forum PHP.pl > Forum > PHP
bpecak
Witam wszystkich,
Pisze na forum po raz pierwszy, skłonił mnie do tego nietypowy problem, nie jestem specjalistą od php i potrzebuje pomocy.
Dorobiłem do strony forum proste forum w php, a do tego aplikacje w vb.net tak aby userzy w firmie mogli nabierząco śledzić forum i szybko odpowiadać na pytania internautów.
Problem polega z polskimi czcionkami, cały serwis mam w kodowaniu iso8859-2, ale jeśli zapiszę z poziomu programu do bazy to pojawiają się pytajniki, jeśli zmienie ustawienia bazy na utf8 to program działa poprawnie i wyswietla czcionkę, ale na stronie pojawiają się pytajniki. Jesli wysle ze strony posta z polski znaczkami to w bazie zapisuje poprawnie lecz w programi pokazuje pytajniki.
Potrzebuje jakiejś funkcji która by poprawnie konwertowała znaki do utf8 i na odwrót

Znalazłem w sieci takie funkcje jednak na niewiele one sie przydały bo problem pozostał

  1. <?php
  2.  
  3.  function plCharset($string, $type) {
  4.  
  5. $win2utf = array(
  6. "\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84",
  7. "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
  8. "\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
  9. "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
  10. "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
  11. "\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a",
  12. "\xbf" => "\xc5\xbc", "\x8f" => "\xc5\xbb",
  13. "\x9f" => "\xc5\xba", "\xaf" => "\xc5\xb9",
  14. "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83"
  15. );
  16. $iso2utf = array(
  17. "\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84",
  18. "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
  19. "\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
  20. "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
  21. "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
  22. "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
  23. "\xbc" => "\xc5\xba", "\xac" => "\xc5\xb9",
  24. "\xbf" => "\xc5\xbc", "\xaf" => "\xc5\xbb",
  25. "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83"
  26. );
  27.  
  28. if ($type == ISO88592_TO_UTF8)
  29. return strtr($string, $iso2utf);
  30. if ($type == UTF8_TO_ISO88592)
  31. return strtr($string, array_flip($iso2utf));
  32. if ($type == WIN1250_TO_UTF8)
  33. return strtr($string, $win2utf);
  34. if ($type == UTF8_TO_WIN1250)
  35. return strtr($string, array_flip($win2utf));
  36. if ($type == ISO88592_TO_WIN1250)
  37. return strtr($string, "\xa1\xa6\xac\xb1\xb6\xbc",
  38. "\xa5\x8c\x8f\xb9\x9c\x9f");
  39. if ($type == WIN1250_TO_ISO88592)
  40. return strtr($string, "\xa5\x8c\x8f\xb9\x9c\x9f",
  41. "\xa1\xa6\xac\xb1\xb6\xbc");
  42.  
  43. }
  44.  
  45.  
  46. function iso88592_2utf8($input) {
  47. static $iso88592;
  48.  
  49. if (!count($iso88592)) $iso88592 = array(
  50.  '?', '', '?', 'ƒ', '?', '?', '?', '?', 'ˆ', '?',
  51.  '?', '?', '?', '?', '?', '?', '', '?', '?', '?',
  52.  '?', '?', '?', '?', '˜', '?', '?', '?', '?', '?',
  53.  '?', '?', ' ', 'Ą', '˘', 'Ł', '¤', 'Ľ', 'Ś', '§',
  54.  '¨', 'Š', 'Ş', 'Ť', 'Ź', '­', 'Ž', 'Ż', '°', 'ą',
  55.  '˛', 'ł', '´', 'ľ', 'ś', 'ˇ', '¸', 'š', 'ş', 'ť',
  56.  'ź', '˝', 'ž', 'ż', 'Ŕ', 'Á', 'Â', 'Ă', 'Ä', 'Ĺ',
  57.  'Ć', 'Ç', 'Č', 'É', '', 'Ë', 'Ě', 'Í', 'Î', 'Ď',
  58.  'Đ', 'Ń', 'Ň', 'Ó', 'Ô', 'Ő', 'Ö', '×', 'Ř', 'Ů',
  59.  'Ú', 'Ű', 'Ü', 'Ý', 'Ţ', 'ß', 'ŕ', 'á', 'â', 'ă',
  60.  'ä', 'ĺ', 'ć', 'ç', 'č', 'é', 'ę', 'ë', 'ě', 'í',
  61.  'î', 'ď', 'đ', 'ń', 'ň', 'ó', 'ô', 'ő', 'ö', '÷',
  62.  'ř', 'ů', 'ú', 'ű', 'ü', 'ý', 'ţ', '˙');
  63.  
  64. return preg_replace("/([\x80-\xFF])/e", '$iso88592[ord($1) - 0x80]', $input);
  65. }
  66.  
  67.  
  68. ?>
sf
http://php.net/iconv - użyj gotowej funkcji, każdy lepszy hosting ją udostępnia, jeśli nie to dzwoń do administratora
bigZbig
A nie prosciej uzyc UTF8 na stronie i w bazie zamiast bawic sie w konwertowanie?
bpecak
Nie moge użyć UTF na stronie ponieważ jest to serwis z dużą bazą na MySql i nie chce go przebudowywać bo nie ja go robiłem, poza tym widzę tu inny problem. U mnie na serwerze jest ok i konwertuje z UTF do iso ale umieszczam na serwerze mojego dostawcy i zapisuje w tablicy w formacie UTF ale jakies dziwne krzaki. vb.net czyta to poprawnie natomiast php nie, a po konwersji pokazuje totalne bzdury sad.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.