![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 31.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Jestem jeszcze zielony więc proszę pisać do mnie na poziomie przedszkola (IMG:http://forum.php.pl/style_emoticons/default/czarodziej.gif) . Używam zagranicznego konta hostingu na serwerze, na którym domyślnym kodowaniem zarówno dla PHP jak i MySQL jest zupełnie coś innego niż potrzebne mi kodowanie latin2. Stworzyłem sobie jednak bazę danych z metodą porównywania napisób w latin2 i wszystko w niej działa dobrze. Uruchomiłem sobie aplikację PHP na tym serwerze (osCommerce) i niestety ta aplikacja zawiera w sobie taki błąd (nie wiem tego na pewno - ale tak się tylko domyślam) - że jej skrypty nie ustalają sposobu kodowania przy łączeniu się z bazą danych albo je ustalają błędny sposób kodowania. I choć w bazie danych wszsytko jest OK zapisane - na stronie pojawiają się (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) . Sądzę, że PHP używa domyślnego dla serwera sposóbu kodowania przy łączeniu się z bazą i jest to kodowanie inne niż latin2. Znalazłem takie rozwiązanie, które dorzucam do każdego skryptu php: Kod mysql_query("SET CHARACTER SET latin2"); mysql_query("SET NAMES latin2"); i większość zaczyna działać poprawnie - ale nie wszystko. I teraz mam np. taki skrypt, który zawiera w sobie element: Kod <?php echo tep_customer_greeting(); ?> I ten element wyświetla mi się na stronie niepoprawnie. Czy mogę jakoś w zakresie tego elementu Kod <?php echo tep_customer_greeting(); ?> umieścić Kod mysql_query("SET CHARACTER SET latin2"); i jeżeli tak to w jaki sposób - musi być chyba jakiś element poprzedający - bo samo wkeljenie tego kodu nic nie zmienia.mysql_query("SET NAMES latin2"); Czy to jest w ogóle sensowne rozwiązanie, żeby w taki sposób zmieniać oryginalne skrypty PHP? Jak do tej pory nie znalazłem innego sposobu rozwiązania tego problemu - poza ewentualnie przejściem na polskie konta webhostingu - czego nie chcę z wielu względów. Czy być może w skryptach PHP mam szukać jakiś ustawień takiego łączenia się z bazą danych - co generuje błąd? Zastanwiam się nad tym pownieważ w ramach tego konta korzystam z phpMyAdmin do przeglądania bazy MySql i o dziwo - pomimo, że ta aplikacja jest również oparta na PHP wszytko wyświetla się poprawnie i nie potrzeba zmianiać skryptów. To że wyświetla się poprawnie wiem na pewno bo jeszcze sprawdzałem za pomocą MySQL Query Browser. Proszę o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
tep_customer_greeting() to jest funkcja, więc zerknij do niej co ona robi - może tam da się dodać te dwie komendy.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 4 Dołączył: 9.10.2007 Skąd: Morąg Ostrzeżenie: (0%) ![]() ![]() |
Jezeli poruwnujesz np. dwa varchary to musza miec te same kodowanie. Poszukaj w poszczegulnych kolumnach w tabelach w bazie jakie ustawione sa kodowania. Wszystkie porownywane musza byc identyczne. Dobrym narzedziem do tego jest phpMyAdmin. Kodowanie zawsze bedzie ustawione takie jakie masz w bazie! I jesli porownujesz tabele ze swojej tylko bazy to musisz miec rozne kodowania!
pozdr |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:48 |