Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Kodowanie MySQL inne niż ISO
Qrzysio
post 14.05.2005, 10:40:41
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Witam.

Od dłuższego czasu mam spory problem, z którym nijak nie potrafię sobie proadzić. Otóż mam bazę danych, która nie posiada kodowania ISO.
W PHPMyAdmin mam napisane:

System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

System porównań dla połączenia MySQL: Tutaj mam listę do wyboru z opcjami takimi jak tu www.krzysiek.moja-ostroleka.pl/kodowanie_mysql.htm

Problem tym, że nie wiem za bardzo co wybrać. Kombinowałem z róznymi ustawieniami, ale bez większego efektu. Problem polega na tym, że gdy skrypt php przeszukuję baze danych to problem pojawia się z polskimi znakami. Najczęściej tylko z ś,Ś,ł oraz Ł.

Czy jest jakieś ustawienie które kodowałoby mi polskie znaki normalny sposób? Bo aktualnie mam takie hieroglify w bazie:

ż = ¿
ł = ³
ę = ê
ą = ±
Ł = £
ś = ¶
ń = ñ
ź = ¼
ć = æ
Ż = ¯


Chyba że jest inny sposob na omienicie takich problemow? kodowanie formularza, zmienic kodowanie strony (aktulanie jest iso-8859-2).

Poradźcie coś bo już mi włosy wypadają.


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
sobstel
post 14.05.2005, 10:53:07
Post #2





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


jest juz kilka watkow na ten temat. sproboj na pocztaku skryptu wywolac zapytanie "SET NAMES latin2".


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
luukaas
post 15.05.2005, 12:05:47
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 14.05.2005

Ostrzeżenie: (0%)
-----


Ja bym spróbował jeśłi masz w MySQL ' u kodowanie utf-8 dać na stronie również utf-8.
Nie wiem jakie są możliwości MySQL ' a pod wzgledem takich obiektow w bazie jak procedury skladowane czy funckje, ale moglbys napisac funckje lub procedure konwersji pomiedzy kodowaniem na stronie i kodowaniem w bazie , zamieniajac w slowie wejsciowym polskie znaki ze strony np '±' na 'ą'.
Pozdrawiam
Go to the top of the page
+Quote Post
jedrus4
post 15.05.2005, 14:01:35
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.04.2005
Skąd: Międzyborów

Ostrzeżenie: (0%)
-----


Cytat(Qrzysio @ 2005-05-14 09:40:41)
Tutaj mam listę do wyboru z opcjami takimi jak tu www.krzysiek.moja-ostroleka.pl/kodowanie_mysql.htm

ustaw z tej listy:
latin2_general_ci
u mnie pomogło


--------------------
pozdrawiam
jedrus4
Go to the top of the page
+Quote Post
Qrzysio
post 15.05.2005, 14:38:34
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Hmm nie bardzo. Po zmienieniu w bazie na latin2 _general_ci i tak nadal są te same krzaczki.

Mam wyszukiwarkę i poza tym, że literka ą wygląda tak ±, to poprawnie działa wyszukiwanie wyrazu, klątwa. Niestety znalezienie wyrazu KLĄTWA już nie działa. Myślałem zeby wyszukiwać tylko małe litery, ale tytuły nie mogą byc tylko z małych liter.... poza tym php i tak nie zamienia poprawnie małego ś na wielkie Ś itp.

Może pomogłoby wprowadzenie w znaczniku FORM paramteru kodowania charset.... widziałem takie cudo na jakiejś stronie, ale nie wiem czy to działa tak jak bym tego chciał. Poza tym nie wiem jakie kodowanie podać??


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
Ace
post 31.05.2005, 12:05:05
Post #6





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(sopel @ 2005-05-14 12:53:07)
jest juz kilka watkow na ten temat. sproboj na pocztaku skryptu wywolac zapytanie "SET NAMES latin2".

u mnie tez byl taki problem, przenosilem dane z mysqla 4.1.x na serwer 4.1.11 i krzaki mialem nie wiadomo czemu... Ale jak uzywalm tego zapytania jako pierwszego zapytania wyslanego do mysqla, to jest ok. Wraca wszystko do pozadku.
Go to the top of the page
+Quote Post
Qrzysio
post 31.05.2005, 13:01:00
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Jak dokładnie wywołać to zapytanie?


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
Ace
post 1.06.2005, 09:04:55
Post #8





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


mysql_query( ... ); ? snitch.gif
Go to the top of the page
+Quote Post
pabbito
post 1.06.2005, 09:29:51
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 26.03.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zaraz po zapytaniu łączącym z bazą zrób:
  1. <?php
  2. mysql_query(&#092;"set names latin2;\");
  3. ?>

w phpmyadmin mam ustawione utf8 i utf_general_ci
i wszystko jest ok.
Ale tez miale podobny problem jak wy przy przenoszeniu bazy na inny serwer. Po exporcie i pozniej imporcie byly krzaki.

Doszedlem do tego ze przy tworzeniu tabel koniecznie trzeba podac sposób kodowania i collation
  1. CREATE TABLE IF NOT EXISTS `zn_kolory` (
  2. `Id_zk` int(6) NOT NULL AUTO_INCREMENT,
  3. `Symbol` varchar(8) DEFAULT NULL,
  4. `Kolory` enum('czerwony','żółty','niebieski','zielony') NOT NULL DEFAULT 'czerwony',
  5. `Pelne` enum('TAK','NIE') NOT NULL DEFAULT 'TAK',
  6. PRIMARY KEY (`Id_zk`)
  7. ) TYPE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Go to the top of the page
+Quote Post
orson
post 1.06.2005, 18:04:20
Post #10





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam ...

ale sama zmiania (z tego co pamiętam) nic nie daje ... dane musisz wgrać jeszcze raz przez połączenie w danym kodowaniu ... czyli tworszysz nową bazę (lub zmieniasz istniejącej) kodowanie na utf i potem przez połączenie z bazą też w utf (lub latin2_general_ci - btw: ci znaczy case insensitive - czyli jak zrobisz wszystko ok to nie będzie miało znaczenia czy to Ą czy ą, znajdzie) wsadzasz dane ... potem pobierasz już normalnie ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
Qrzysio
post 2.06.2005, 07:19:31
Post #11





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Już traciłem nadzieję, ale działa!!

Pozostaje tylko pytanie jak w jakiś w miare szybki sposób "przekonwertować" te wszystkie krzaczki na polskie znaki? Bo ręcznie to z miesiąc mi to zajmie....


EDIT:

Jeszcze jedno pytanie: Gdy wykonałem następujący skrypt:

  1. <?php
  2. ?php
  3. mysql_query(&#092;"SET NAMES latin2;\");
  4. ?>


to jest u wszystko okej. A jaka wartość SET NAMES była przed wykonaniem komendy? jak to sprawdzić?

Ten post edytował Qrzysio 2.06.2005, 09:06:03


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
sobstel
post 2.06.2005, 10:21:50
Post #12





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat
A jaka wartość SET NAMES była przed wykonaniem komendy? jak to sprawdzić?


SHOW CREATE TABLE lub SHOW CREATE DATABASE

Cytat
Pozostaje tylko pytanie jak w jakiś w miare szybki sposób "przekonwertować" te wszystkie krzaczki na polskie znaki? Bo ręcznie to z miesiąc mi to zajmie....


wyeksportuj baze i uzyj opcji Zatsap tekst dowolnego edytora i potem zrob z powrotem import

Ten post edytował sopel 2.06.2005, 10:22:52


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Qrzysio
post 2.06.2005, 10:39:12
Post #13





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Problem w tym że edytorem sie nie da. Polskie znaki w bazie danych to "?" a jak zrobię eksport i edytuję w edytorze textu to wiadomo ze bedzie traktowal kazdy znak zapytania jako taki wlasnie znak i nie rozrozni ktory ? powinien być ż, który ą itp. Trzeba by było wykonac to od razu na bazie danych. Chyba ze masz jakies dobre narzedzie/notatnik questionmark.gif


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
sobstel
post 2.06.2005, 10:41:27
Post #14





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


a nie masz wersji bazy sprzed koncwersji?


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Qrzysio
post 2.06.2005, 10:51:42
Post #15





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Niestety sad.gif

Strukturę mam taką, że tylko dwa pola muszą być latin, reszta moze byc w standardowym - staram sie wlasnie wydobyc jak sie nazywa to standardowe ustawienie. Dzieki temu bede mogl wyswietlac w latin a czesc w tym standardowym


EDIT: jednak chyba nie będzie to proste sad.gif Chyba pozostaje mi porpawienie błędów (krzaczków)...

Ten post edytował Qrzysio 2.06.2005, 10:53:30


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
pabbito
post 2.06.2005, 21:26:34
Post #16





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 26.03.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(Qrzysio @ 2005-06-02 11:39:12)
Problem w tym że edytorem sie nie da. Polskie znaki w bazie danych to "?" a jak zrobię eksport i edytuję w edytorze textu to wiadomo ze bedzie traktowal kazdy znak zapytania jako taki wlasnie znak i nie rozrozni ktory ? powinien być ż, który ą itp. Trzeba by było wykonac to od razu na bazie danych. Chyba ze masz jakies dobre narzedzie/notatnik questionmark.gif

prawdopodobnie miales kodowanie utf-8 , otworz w jakims edytorze ktory czyta takie kodowanie np PSPAD (polecam)
Go to the top of the page
+Quote Post
Qrzysio
post 3.06.2005, 00:35:42
Post #17





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 22.06.2003
Skąd: Ostrołęka

Ostrzeżenie: (0%)
-----


Niestety nie pomaga - chyba że się nie znam. Jesliby się komuś chciało sprawdzić to plik z kopią bazy danych jest tutaj:

www.krzysio.us/forum/wypozyczalnia_baza_filmow.rar

Częśc rekordów została poprawiona ale to kropla w morzu tego co trzeba poprawić.


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post
orson
post 3.06.2005, 17:50:04
Post #18





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam

a szukałeś u źródła questionmark.gif dev.mysql.com questionmark.gif można tam znaleść:
http://dev.mysql.com/doc/mysql/en/set-option.html oraz
http://dev.mysql.com/doc/mysql/en/show.html
a rozwiązaniem twojego problemu jest: http://dev.mysql.com/doc/mysql/en/charset-convert.html ... czyli:
jeżeli nie masz ściągasz mysql 41 lub nowsze instalujesz, importujesz do testowej tabeli, sprawdzając czy w importowanej bazie NA PEWNO JEST STARE (ZLE) KODOWANIE exclamation.gif, zakładasz nową pustą tabelę z poprawnym kodowaniem (np. utf-8)
potem robisz zapytanie:
  1. INSERT
  2. INTO utf8table (utf8column)
  3. SELECT CONVERT(latin2field USING utf8)
  4. FROM latin2table;
które przeniesie ci do końcowej tabeli ... trochę roboty ale jak już puścisz zapytanie to samo ci zrobi wszystko ...

ps. co do znaków zapytania - one tylko tak się wyświetlają chyba ... w bazie powinno być ok.


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
snowjedrzej
post 16.06.2005, 21:29:48
Post #19





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 16.06.2005

Ostrzeżenie: (0%)
-----


Pozwolicie, ze dalej pociagne ten watek. Ja mam taki problem:

Musze eksportowac pliki ze starego serwera na nowy.

Na starym serwerze mam:
- PHPMyAdmin 2.3.2,
- MySQL 4.0.24
-język PHPMyAdmin ustawiony na polish (charset pl-iso 8859-2).

Na nowym sererze mam:
- PHPMyAdmin 2.6.1pl-3,
- MySQL 4.1.11, language polish (pl-utf-8 ),
- system kodowania znaków dla MySQL: UTF-8 Unicode (utf8),
- system porównań dla połączenia MySQL: utf8_general_ci.

Eksportuje baze ze starego serwera, uzyskuje ja w pliku .php. Probuje zrobic import z tego pliku na nowy serwer i wtedy mniej wiecej polowe tabel udaje mi sie wgrac, ale bez polskich znakow (same krzaki) a reszty tabel nie udaje mi sie w ogole wgrac od momentu gdy mi sie pojawia blad:

MySQL zwrócił komunikat:

#1062 - Duplicate entry 'u' for key 1

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in (...)


PROBLEM JEST W KODOWANIU ZNAKOW poniewaz SQL odbiera moje zapytanie

INSERT INTO phpbb_search_wordlist VALUES ('użytkowników', 1004, 0) - tak jest napisane w pliku


jako INSERT INTO phpbb_search_wordlist VALUES ('u?ytkownik󷧬1004, 0) - znika końcówka ów' (i w tym ten apostrof - a to generuje blad).

Robilem juz z moim plikiem w ktorym mam wyeksportowana baze wszystko. Zamienilem kodowanie w Notatniku na utf-8 a wtedy w ogole nie udalo mi sie przeprowadzic nawet czesci importu bo pojawil sie jakis niestworzony blad:

Błąd
zapytanie SQL:

# phpMyAdmin MySQL-Dump
# version 2.3.2
# http://www.phpmyadmin.net/ (download page)
#
# Host: mysql.ibc.pl
# Czas wygenerowania: 16 Cze 2005, 21:28
# Wersja serwera: 4.00.24
# Wersja php: 4.3.10
# Baza danych : `baza2`
# --------------------------------------------------------
#
# Struktura tabeli dla `dane`
#
CREATE TABLE dane(

user_id smallint( 3 ) unsigned NOT NULL AUTO_INCREMENT ,
login varchar( 12 ) NOT NULL default '',
imie varchar( 15 ) NOT NULL default '',
nazwisko varchar( 30 ) NOT NULL default '',
firma varchar( 30 ) NOT NULL default '',
email varchar( 40 ) default NULL ,
ulica varchar( 30 ) NOT NULL default '',
kod mediumint( 6 ) NOT NULL default '0',
miasto varchar( 30 ) NOT NULL default '',
haslo varchar( 12 ) NOT NULL default '',
ostatnie_logowanie datetime NOT NULL default '0000-00-00 00:00:00',
obecne_logowanie datetime NOT NULL default '0000-00-00 00:00:00',
ilosc_kontraktow tinyint( 3 ) NOT NULL default '0',
PRIMARY KEY ( user_id )
) TYPE = MYISAM
MySQL zwrócił komunikat:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '# phpMyAdmin MySQL-Dump
# version 2.3.2
# http://www.phpmyadmin.net/ (downl' at line 1


podczas gdy skladnia jest, jak widac poprawna.



Czy moglibyscie mi pomoc? Będę bardzo wdzięczny, pozdrawiam.

Jędrzej
Go to the top of the page
+Quote Post
Dynuel
post 24.06.2005, 08:13:18
Post #20





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

Ostrzeżenie: (0%)
-----


a wiecie moze w ogole jakie kodowania trzeba ustawić w php, apache i mysql'u (najnowszych wersjach), aby polskie znaki dzialaly?? i gdzie to sie ustawia?? dzięki


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:14