[mysql] - Polskie znaki.

0

Witam

Mam proble, jak widze już był na forum, jednak że nic mi nie wychodzi.

Mam bazę, nie mam phpMyAdmin, ani innego tam narzedzia do zarzadzania nią, jedyne przez zapytania ze swoich skryptów.

wykokonałem taką tabele:

CREATE TABLE `k_sklepy` (
  `id` int(11) NOT NULL auto_increment,
  `idcat` int(11) NOT NULL default '0',
  `tytul` varchar(255) NOT NULL default '',
  `opis` text NOT NULL,
  `url` varchar(255) NOT NULL default '',
  `marka` varchar(255) NOT NULL default '',
  `produkt` varchar(255) NOT NULL default '',
  `firma` varchar(255) NOT NULL default '',
  `adres` text NOT NULL,
  `tel` varchar(50) NOT NULL default '',
  `faks` varchar(50) NOT NULL default '',
  `mail` varchar(255) NOT NULL default '',
  `plat` varchar(255) NOT NULL default '',
  `termin` int(11) NOT NULL default '0',
  `glosy` int(11) NOT NULL default '0',
  `punkty` int(11) NOT NULL default '0',
  `visible` char(1) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;

Strona kodowana jest w ISO iso-8859-2. I przy pobieraniu danych i ich wyświetleniu na stronie, tam gdzie są powinny być polskie czcionki są znaki zapytania!.

Wykonałem także takie zapytania:

SET NAMES 'latin2';
SET CHARACTER SET latin2;

Bez ort! :/

Prosze o pomoc!!

0
header('Content-Type: text/html; charset=iso-8859-2');
0

No i niby co mam sobie z tym zrobic ?

// domysl sie; blokuje ;] [mf]
//a ja odblokowuję, gdyż autor nie wspomniał, że używa PHP - może się na tym nie zna - wyraźnie jest, że pyta o bazę - nie można zakładać, że wymiata w PHP - M

0

ok mój błąd ;P
ten kod:

header('Content-Type: text/html; charset=iso-8859-2');

wklepujesz w jakiś plik ładujący się na początku (jakiś konfiguracyjny czy cuś ;]. Oczywiście jeśli piszesz stronkę w php.

Jeśli będziesz miał problemy to spraw po prostu, żeby w sekcji META stronki pojawił się taki kod:

<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-2'>
0

Ale tak wlasnie mam i nici z tego :/

Ale teraz mam pytanie, a raczej zagadka :

wejdzcie na strone:

http://katalog-stron.za.pl i http://ekatalog.freehost.pl

obydwie strony korzystaja z jednej bazy tych samych tabel i danych utworzonej na http://www.badblock.com/
i obydwie strony sa kodowane w iso-8859-2 i wszytko maja tak samo.

Wiec trzemu na jednej stronie nie ma polskich znakow? a na drugiej sa?

0

"Render mode: Quirks mode" - to już mi się nie podoba ;)
A poza tym: Czy jest to ten sam skrypt tylko na dwóch serwerach? Jest diametralnie inny rozmiar plików, więc mi się nie wydaje...

0

Skrypt jest identyczny w 100%. ale na serwerze za.pl dopisywany jest skrypt z reklama.

0

Hmm... Strzelałbym, że to jego wina. Przecież fakt, że przeglądarka takie kwiatki wyświetla, to cud. Na dobrą sprawę WSZYSTKO za </html> winno być ignorowane. Swoją drogą rozpoczęcie dokumentu od <html> to kolejne nieporozumienie.

0

hmm, ale mam jeszcze jeden taki serwer, w którym nic nie jest doklejane i jest to samo jak na serwerze za.pl :/

A jak powinna sie zaczynać strona jak nie od <html> ?

A i jeszcze co mnie dziwi, to ze na tym serwerze za.pl, zamiast krzaków sa zapytajniki, nie ważnie czy to będzie literka "ółąęćń" zawsze pokazuje zapytajnik, co nie pozwala rozróżnić czy powinno być "ł" czy "ą" itd. Bo w tedy mogłbym swoją funkcję zrobić która by je poprawiala :/

0

A ja dodam tak od siebie - chyba nie czytales nic na temat normalizacji relacyjnych baz danych patrzac na sposob organizacji Twojej tabeli. :P

0
ManC napisał(a)

A jak powinna sie zaczynać strona jak nie od <html>?

Każda strona internetowa powinna zaczynać się znacznikiem Doctype, po którym dopiero następuje główny znacznik dokumentu, tj. <html>.

To, co piszą w większości kursów, znaczy że "strona HTML zaczyna się tagiem <html>" jest nieprawdą.

Doctype jest niezbędny, by przeglądarka zorientowała się, co to za typ strony, i aby strona mogła zostać poprawnie wyświetlona - stąd Doctype jest niezbędnym elementem przy walidacji strony.

Strony internetowe napisane w języku XHTML czasami zaczynają się jeszcze inaczej, tak zwanym prologiem XML, ale nie zawsze jest to pożądane - ale to już temat na off-topic.

0

Dzieki za wyjaśnienie,

Ale z baza tz. wyświetlaniem problem jest dalej jaki był :/

Ale mam pytanie, w jaki sposów przekonwertować text z iso-8859-2 na UTF8, prosił bym o jakiś przykład.

0
ManC napisał(a)

Dzieki za wyjaśnienie,

Ale z baza tz. wyświetlaniem problem jest dalej jaki był :/

Ale mam pytanie, w jaki sposów przekonwertować text z iso-8859-2 na UTF8, prosił bym o jakiś przykład.

użyj mocy, ee znaczy się guzika szukaj ;)

0

ehh dobre, użyłem:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

I mi wszytko wyśrodkował :]

Juz sobie poradziłem, ale nadal nie wiem co jest grane.

Czy to możliwe że popieranie danych z bazy na serwerze za.pl sa przysyłane z kodowaniem UTF-8 ?? a na serwerze freehost.pl w ISO !!! a kożystają z tej samej bazy!

0

Jeśli chodzi o konwersję: Użyj albo iconv, jeśli masz do niej dostęp, albo jakiejś niezależnej klasy. Osobiście używam czegoś, co ściągnąłem dawno temu z neta, nazywa się to zdaje się CharsetConvert.class.php i działa. Jest trochę wolne, ale trudno.

0
Adam.Pilorz napisał(a)

Jeśli chodzi o konwersję: Użyj albo iconv, jeśli masz do niej dostęp, albo jakiejś niezależnej klasy. Osobiście używam czegoś, co ściągnąłem dawno temu z neta, nazywa się to zdaje się CharsetConvert.class.php i działa. Jest trochę wolne, ale trudno.

a nie moża po prostu tak:

http://pl.php.net/manual/pl/function.mb-convert-encoding.php ???

0

co do konwersji znalazłe fajną funkcję pod adresem:

http://php5.pl/php/konwersja_systemu_kodowania_znakow_pomiedzy_iso88592_win1250_i_utf8

0

CyberKid: Można, ale ma to dwie wady:

  1. Nie obsługuje Win-1250 (albo nie wiem, jak to nazwać w tych ich durnych nazwach kodowań)
  2. Nie obsługuje również wielu innych kodowań, skąd wniosek, że jest NIEUNIWERSALNA.

Do podanego przykładu faktycznie nada się (ISO o dziwo potrafi przekształcić i to nawet prawidłowo), ale jak bym potrzebował szerszego zastosowania, to odpada.

P.S. Proszę wybaczyć ton tego "w tych ich durnych nazwach kodowań", ale jestem wkurzony na swojego wykładowcę od TPI za sposób egzaminowania, a dzisiaj musiałem przez cały dzień lampić się w notatki z automatów skończonych.

ManC: Może i fajna funkcja, ale znów to samo: nieuniwersalna. Nieraz potrzeba czegoś, co obsłuży więcej niż trzy rodzaje kodowania.

0

Ale co mnie gryzie i nie daje spokoju, nikt nie wie czym spowodowany jest opisany prze zemnie problem, tz. bazy mysql, i podanych stronach, na jednej sa polskie znaki na drugiej nie ma, czy to by zalezało od konfiguracji php na serwerze?, i dlaczego zamiast polskich znaków wszedzie są zapytajniki zamiast "krzaczków".

na swoim serwerze w bazie i stronie stosuje zakodowanie w UTF-8 i jest ok, a gdy chce ISO nie jest ok, wiec php nie odsługuje poprzez zapytania ISO?, albo baza (ale raczej php), ale gdy zastosuję funkcję:

print ('??ćńłóżĽ');

na swoim serwerze i strony kodowanej w ISO to normalnie mi wyświetla polskie znaczni, a z zapytania przeklęte zapytajniki [!!!] [!!!] [!!!]

0
Adam.Pilorz napisał(a)
  1. Nie obsługuje Win-1250 (albo nie wiem, jak to nazwać w tych ich durnych nazwach kodowań)
    Spis wszystkich: http://uk.php.net/mbstring

...
Windows-1251 (CP1251)
Windows-1252 (CP1252)
...
niestety, 1250 albo zapomnieli dopisać albo nie działa [nie testowałem] - ale masz przynajmniej sposób nazewnictwa.

0

Prosze - sprobuj dac: mysql_query("SET NAMES latin2"); ale nie zwyczajnie a ZAWSZE po nawiazaniu polaczenia z baza z poziomu PHP. (niby glupie a bardzo czesto pomaga) -- chyba ze zrobilem wam off-topa za co serdecznie przepraszam :(

0

To tez nie pomaga :/

Cos z php jest, tak bym sadził, a czy latin2 to na pewno iso ???

0

latin2 to latin2 a ISO to ISO

tylko latin2 i ISO-8859-2 mają polskie naki i to je łączy

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