![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam , mam problem z polskimi znakami.PHP podczas wysyłania formularza wszystko parsuje na kod ASCII mimo że w nagłówkach mam deklaracje kodowania.Szukałem wszędzie i szukać będę dalej rozwiązania.Może to jest wina jakiegoś ustawienia w php.ini??Jest to dla mnie bardzo ważne ,gdyż w połączeni z bazą danych MYSQL nie zapisuje mi w rekordach polskich znaków.Nie uzywam żadnych funkcji typu htmlentities ,htmlspecialchars ponieważ polskie litery zapisywało mi w postaci Encji ale ,czytałem że to normalne.Problem jedynie w tym ,że kombinuje i wykombinować nie mogę dlaczego mimo deklaracji nagłówków używania przeróżnych funkcji typu ICONV nadal koduje mi w ASCII po wysłaniu formularza.
Moje ustawienia : The Apache HTTP Web Server Version 2.2 php-5.3.3 mysql-5.1.52 WindowsXP Home Może ktoś miał już taki problem?? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Jaką masz deklarację kodowania w nagłowkach? Upewnij się też czy jest poprawne kodowanie w tabelach w bazie danych. PS. Czasami po połączeniu z bazą pomaga coś ala mysql_query("SET NAMES 'UTF8'"); -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko w bazie mam zadeklowane na latin2 na php też .To nie wina sql.Może być że to Apache,ale w 90% pewien jestem że wina leży po stronie Php,mam taką funkcje:
Kod $ charset = mysql_client_encoding($dbc); if ( $charset != 'latin2' ) { mysql_set_charset('latin2',$dbc); if (!mb_check_encoding($r_imie,'latin2') ) { die ('Co to za kodowanie ziom?'); // ![]() } else { $r_imie=iconv("ASCII" ,"latin2//TRANSLIT",$r_imie); $r_imie=html_entity_decode( $r_imie, ENT_QUOTES, 'latin2'); echo mb_detect_encoding($r_imie, "auto"); } gdzie r_imie to dane z imputa-imie.Funkcja iconv konwetuje z ASCII do latin2 a mb_detect_encoding sprawdza jakie kodowania i efekt jest taki że zawsze jest ASCII mimo że dam różne kodowania ISO UTF i inne to efekt wyjściowy jest zawsze taki sam= ASCII i w głowę zachodzę dlaczego? ![]() ![]() Ten post edytował Rid 5.12.2010, 23:50:07 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 1 Dołączył: 11.11.2008 Skąd: Kalisz Ostrzeżenie: (10%) ![]() ![]() |
Kolego uniwersalnym sposobem jest wysyłanie do bazy polskich znaków w postaci wspomnianych encji.
Nie rozmiem jednak celu trzymania polskich znaków w bazie danych. Jeżeli dane do bazy wysyłasz z poziomu strony (przykładowo formularze), następnie je na niej odczytasz to pomimo krzaczków w bazie otrzymasz polskie znaki "bez zbędnych cudów". Ten post edytował 1oBuZ 5.12.2010, 20:47:08 -------------------- W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi.
Dla komputera nie ma rzeczy niemożliwych z wyjątkiem tych, których od niego wymagamy. Liczba osób w zespole programistycznym ma tendencje wzrastające, niezależnie od ilości pracy. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Trochę ucieszyła mnie ta odpowiedź , trochę zasmuciła bowiem utrudnia to manipulowaniem rekordów bazy z poziomu konsoli sql.Może jest jednak jakieś rozwiązanie-ja myślę że to złe parsowanie metody przesyłu POST.Może jakieś specjalne
ustawienia w pliku php.ini.Wiem,że istnieje możliwość zmiany sposobu przesyłu metody Post z ASCI do ANSI lub w trybie binarnym ,lecz nie wiem gdzie co i jak dokładnie ustawić. Liczyłem na jakąś pomoc w rozwiązaniu tej kwestii.Pozostaje mi użyć funkcji htmlentities i sprowadzić polskie znaki do encji a te z koleji przerobić za pomocą str_replace aby się zapisały do bazy z języczkami ,może się uda albo się mylę. ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Stwórz tabele z porównywaniem znaków utf8_polish_ci, koniecznie STWÓRZ table, nie zmień już istniejących bo to nic nie da. Następnie zaraz po połączeniu wykonuj tak jak napisał Ci strife:
To jedyna możliwość, na utrzymanie wszystkich danych w utf8. Niestety po stworzeniu tablicy w innym kodowaniu i następnie przestawieniu ich na prawidłowe nie uzyska się pożądanego efektu. Nagłówki plików bazy .mdf zostaną już utworzone w innym kodowaniu i tak też będą przechowywać dane. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wcześniej miałem UTF8- w bazie miałem ustawione wszystko na utf8 nawet tabele ,jednakże system porównania utf8 general ci hmm -czeka mnie znowu konwersja -wszystkich dokumentów na utf8 ,ale spróbuje.Dziękuje + dla Ciebie:)
CD....utworzyłem bazę w utf8 sformatowałem dokumenty do utf8 bez boma i nadal krzaki.Użyłem funkcji sprawdzającej Kod $charset = mysqli_client_encoding($dbc); wskazuje ona na UTF-8 .Ustawiłem , jeszcze echo "The current character set is: $charset\n"; Kod mysqli_query("SET NAMES utf-8"); przed wysłaniem zapytania do bazy i porównanie znaków z UTF-8 polish_ci i nie pomogło.Baza była tworzona w MySql WorkBench gdzie każda kolumna w tabeli jak i sama tabela jest w UTF-8 polish_ci. Wszędzie w nagłówkach mam zadeklarowane utf-8.Może jakieś dodatkowe sugestie?![]() ![]() Ten post edytował Rid 8.12.2010, 00:15:47 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Twoje zapytanie w poście wyżej z myślnikiem wygenerowało błąd, którego pewnie nie obsługujesz przy tak prostym zapytaniu. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki-już poprawiłem -ale nie pomogło; ą zapisuje jako ů ,ł jako ┼é , ź- jak ┼║ itd.Już brak mi pomysłów
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To może jeszcze raz podsumuje.
1. Zakładasz NOWĄ bazę danych z kodowaniem utf8_polish_ci 2. Zmieniasz kodowanie strony na utf8 zarówno w typie plików jak i w meta tagach 3. Łączysz się do bazy danych zawsze z SET NAMES utf8; Jeżeli jesteś pewien że spełniasz 3 powyższe warunki i wciąż nie działa to odezwij się do mnie na GG, bo to będzie pierwszy przypadek gdzie nie działa od kiedy pamiętam. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
3 warunki spełnione. Baza stworzona od nowa w MySql Workbench z porównaniem znaków utf8 polish_ci.Niestety nie pomogło
![]() Dostałem skrypt od użytkownika celbarowicz polegający na utworzeniu bazy danych w utf8 ,collate utf 8 polish_ci z poziomu php -bazę danych utworzyło więc musi być kodowanie w tym formacie.Mam ustawione meta ,header na utf-8 , skonwertowane pliki php na utf8 bez bom ,nawet przeglądarkę mam na utf-ie i co nadal krzaki w bazie danych ,czy apache może mieć coś z tym wspólnego?? Ps.Nie mam aktualnie żadnych funkcji typu Htmlentities.Ma ktoś jeszcze jakieś pomysły.Będę wdzięczny za każdą sugestje. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
pokaż skrypt 1)tworzący bazę z tabelą,
2) zapisujący do tabeli, 3)odczytujący dane. to co Tobie podałem działau mnie na: 1)localu, 2)cba.pl Ten post edytował celbarowicz 9.12.2010, 23:31:48 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Połączenie z bazą
Kod header('Content-type: text/html; charset=UTF-8'); $link=mysql_connect('localhost','root','artur'); $charset = mysql_client_encoding($link); if ( $charset != 'utf8' ) { mysql_set_charset('utf8',$link); } $sql="CREATE DATABASE IF NOT EXISTS rejestr "; mysql_query($sql) or die(mysql_error()); mysql_select_db('rejestr',$link); $sql="CREATE TABLE IF NOT EXISTS rejstr( id int(4) NOT NULL auto_increment, nick varchar(30) NOT NULL , haslox varchar(32) NOT NULL , mails varchar(70) NOT NULL , PRIMARY KEY klucz1 (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; "; mysql_query($sql) or die(mysql_error()); ?> Skrypt zapisujący do tabeli: Kod require_once 'connection.php'; $charset = mysql_client_encoding($link); echo "The current character set is: $charset\n"; mysql_query("SET NAMES utf8"); $r_imie=html_entity_decode( $r_imie, ENT_QUOTES, 'utf8'); echo mb_detect_encoding($r_imie, "auto"); $query="INSERT INTO rejstr(id,nick,haslox,mails)"."values(null,'$r_imie','$ghaslo','$e_mail')"; mysql_query($query, $link) or die('Błąd zapytaniu do bazy danych.'); mysql_query("SET NAMES utf8"); mysql_close($link); odczytującego nie mam-chodzi mi o polskie litery zapisane w bazie sql-są po prostu krzaki Ten post edytował Rid 9.12.2010, 22:44:45 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
sprawdź to
zapis do bazy
i teraz speawdź co jest w bazie Ten post edytował celbarowicz 9.12.2010, 23:11:20 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
krzaki
![]() Na sztywno nie przyniosło rezultatu ,sprawdzanie bazy jaki i zmiennej $r_imie wykazuje po przesłaniu że jest w utf8 hmm ![]() |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
korzystam z wampa, używając tych skryptów dokładnie tak jak podałem w bazie mam polski znaki.
![]() ![]() |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za uwagę
![]() ![]() Możesz mi jeszcze powiedzieć jaką wersje php masz bo na mojej to czytałem że nawet xdebuger nie pójdzie może to jest nie właściwa wersja ![]() |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
WAMPSERVER 2.0
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 16:06 |