Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie MySQL inne niż ISO
Qrzysio
post
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ą.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
sobstel
post
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".
Go to the top of the page
+Quote Post
luukaas
post
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
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
Go to the top of the page
+Quote Post
Qrzysio
post
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ć??
Go to the top of the page
+Quote Post
Ace
post
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
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?
Go to the top of the page
+Quote Post
Ace
post
Post #8





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

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


mysql_query( ... ); ? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
pabbito
post
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
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
Go to the top of the page
+Quote Post
Qrzysio
post
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
Go to the top of the page
+Quote Post
sobstel
post
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
Go to the top of the page
+Quote Post
Qrzysio
post
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
sobstel
post
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?
Go to the top of the page
+Quote Post
Qrzysio
post
Post #15





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

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


Niestety (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Chyba pozostaje mi porpawienie błędów (krzaczków)...

Ten post edytował Qrzysio 2.06.2005, 10:53:30
Go to the top of the page
+Quote Post
pabbito
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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ć.
Go to the top of the page
+Quote Post
orson
post
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) dev.mysql.com (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
snowjedrzej
post
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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 01:17