[PHP] Konwersja znaków win>utf z post

0

Na stronie mam ustawione kodowanie utf-8, w bazie również, ale gdy wpiszę do formularza na stronie lub w phpmyadminie tekst z polskimi znakami, wszystko wyświetla się niepoprawnie. Nie pomagają polecenia typu set character set 'utf8' czy set names 'utf8'. Napisałem funkcję do konwersji (choć z tego co wiem są już takie, ale nie ważne). Sprawdziłem ją na przykładowym tekstach wpisanych "na sztywno" do źródła i działa, jednak gdy przed wykonaniem zapytania konwertuję stringa na utf, jakby nic się nie działo. Tzn. jest tak samo źle. Czy możliwe jest żeby pola formularza były błędnie zapisywane w $_POST[] ?

0

NIestety nie o to chodzi. Jak już napisałem, moja funkcja działa poprawnie, ale wygląda to tak jakby polskie znaki były nieprawidłowo przekazywane przez POST. Jeśli nie wywołam nic w rodzaju SET NAMES czy podobne, to po wpisaniu do formularza polskich znaków, część z nich wyświetla się na stronie potem dobrze, część jak "ó" źle. Natomiast gdy zajrzę do bazy, są tam dość dziwne krzaki, np. zamiast ąółśćżź jest Ä????????Ä?????
Nie za bardzo wiem jak sobie z tym ,poradzić.

0

Miałem podobny problem z utf-em.. za nic w swiecie nie chiał wyswietlić małego Ł i nikt na tym forum nie byłw stanie pomóc.

pomogło przeinstalowanie bazy danych (nie wiem czy Ty masz taka mozliwosc :/)

to link do tego tematu http://4programmers.net/Forum/275596

0

Niestety nie mam możliwości zmiany bazy. Ale wydaje mi się, że to nie o to chodzi. Jeśli w bazie mam zapisane polskie znaki w postaci unikodów, wszystko działa. Problem w tym, że wpisuję do formularza zestaw polskich znaków, są wysyłane przez post do innego skryptu php i tam mają zostać skonwertowane na utf przez odpowiednią funkcję i wpisane do bazy. Tymczasem, funkcja (i moja wersja i podana w linku powyżej) tak jakby nie widzi w post polskich znaków i nie konwertuje ich.

<form method="post" action="adres_skryptu">
<table style="margin:auto">
<tr>
   <td>Autor</td><td><input type="text" name="autor"/></td>
</tr>
<tr>
   <td>Temat</td><td><input type="text" name="temat"/></td>
</tr>
<tr>
   <td>Tre&#347;&#263;</td><td><textarea cols="60" rows="15" name="tresc"></textarea></td>
</tr>
<tr><td colspan="2"><input type="submit" value="Publikuj" name="send"/></td></tr>
</table>
</form>

To formularz. A funkcja zamieniająca i wpisująca do bazy:

$autor=$_POST['autor'];
$tresc=win2utf($_POST['tresc']);
$data=date('Y-m-d H:i:s');
$temat=$_POST['temat'];
$id=$_GET['id'];
mysql_query("insert into posty set temat='$id', autor='$autor', data='$data', tresc='$tresc' ");

Wszystko się wpisuje do bazy, tylko że nie ulega najpierw konwersji. Funkcja win2utf jest w linku wyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1