Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: polskie znaki
Forum PHP.pl > Forum > PHP
fran3k
Witam wszystkich.
Wiem że temat nieraz już się przewijał na forum, ale żadne z wcześniejszych rozwiązań u mnie nie zadziałało.
Problem polega na tym iż podczas zapisywania danych z formularza do bazy zamiast polskich liter otrzymuje: jako "ś" - "¶"... tak samo jest z pozostałymi literami ogonkowymi.
Kodowania na stronie próbowałem różne - obecnie iso-8859-2, kodowanie w bazie latin2. Sprawdzałem również kodowanie zarówno na stronie jak i w bazie utf8, ale nie dało to rezultatu.
Problem pojawia się w momencie gdy próbuje przekazać dane ze zmiennych wypełnianych w formularzu. W momencie gdy zamiast zmiennej wpisałem "łóąśźżśąłó" w bazie zapis był poprawny.
ayeo
A masz odpowiednie kodowanie w pliku z formularzem?
Mlodycompany
zmień kodowanie strony na utf-8
fran3k
No właśnie już zmieniałem konwersje znaków zarówno pliku jak i w nagłówku strony. Próbowałem kombinacji iso-8859-2 dla strony i latin2 dla bazy oraz utf8 zarówno dla kodu php jak i bazy. Niestety nie zauważyłem żadnych zmian.
wookieb
A zastosowałeś sie do rady z mojego linku? To rozwiazuje 90% problemow z kodowainem.
fran3k
Cytat(wookieb @ 16.08.2008, 11:09:20 ) *
A zastosowałeś sie do rady z mojego linku? To rozwiazuje 90% problemow z kodowainem.


Dzięki za link jest świetny aczkolwiek niezadziałała u mnie porada odnośnie kodowania w mysql.
wygląda to u mnie tak: ustawiam kodowanie na stronie
Kod
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />

póżniej po połączeniu z bazą ustawiam kodowanie dla połączenia:
Kod
mysql_query("SET NAMES 'utf8'") or die("blad ustawienia kodowania");<BR>  mysql_query("set character set 'utf8_general_ci'");<BR>   mysql_query("SET collation_connection = utf8_general_ci");

następnie pobieram zmienne z formularza:
Kod
$nazwisko = addslashes(nl2br(htmlentities($_POST['nazwisko'])));

a na końcu zapisuje do bazy:
Kod
$sql = 'INSERT INTO '.$tabela.' (nazwisko) VALUES ('.$nazwisko.')';
gandziorz
Sprawdź moją funkcję (banalnie prostą winksmiley.jpg).
Filtruj przez nią dane i polskie znaki zamieniane są na znaki UTF.

  1. <?php
  2. function plznakie ($zmienna) {
  3. $polskie=Array("ą","ć","ę","ł","ń","ś", "ó", "ź","ż","Ą","Ć","Ę","Ł","Ń","Ś", "Ó", "Ź","Ż");
  4. $zamienniki=Array("& #261;","& #263;","& #281;","& #322;","& #324;","& #347;","& #243;","& #378;","& #380;","& #260;","& #262;","& #280;","& #321;","& #323;","& #346;", "& #211;","& #377;","& #379;");
  5. $zmienna=str_replace($polskie,$zamienniki,$zmienna);
  6. return $zmienna;
  7. }
  8. ?>

Między & a # usuń spacje.
Mlodycompany
gandziorz ale ciężko troche jest filtrować każdy wyraz na stronie. jeśli ma ustawione kodowanie na utf-8 i nadal nie ma polskich znakow to jest problem z kodowaniem pliku. fran3k z jakiego edytora korzystasz??
fran3k
Mlodycompany właśnie tak myślałem że to o to chodzi i sprawdzałem na notepad++ edhtml pspad. Zapewne popełniłem jakiś banalny błąd ale nie potrafię go zlokalizować....
Mlodycompany
polecam ci KED. tam sie łatwo zmienia kodowanie strony.
mkdes
Temat kodowania w programach omówiłem kiedyś.
Polskie znaki to nie tylko znaczniki meta i odpowiednie połączenie z bazą.
http://forum.php.pl/index.php?s=&showt...st&p=364733
fran3k
mkdespo przeglądarka dobrze mi sie ustawia na UTF8. Kodowanie przekazuje poprzez

Kod


header('Content-type: text/html; charset=utf8');

Jeżeli chodzi o pliki to również są kodowane w UTF8. Nie mam już pojęcia dlaczego nadal przesyła mi zmienne bez polskich znaków ...



Poradziłem sobie z polskimi znakami. CHodziło o sposób przekazywania zmiennych
Kod
$nazwisko = addslashes(nl2br(htmlentities($_POST['nazwisko'])));

Mianowicie nie doczytałem że "htmlentities" nie obsługuje polskich znaków.
Dziękuje wszystkim za pomoc.
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.