Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V  « < 2 3 4  
Reply to this topicStart new topic
> Problem z kodowaniem w MySQL, szystkie polskie znaki zamiejają sie w ?
woodzu
post
Post #61





Grupa: Zarejestrowani
Postów: 37
Pomógł: 3
Dołączył: 14.12.2006
Skąd: /usr/bin/php

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


Cytat(WereWolf @ 14.12.2006, 23:11:09 ) *
druga sprawa... przy takiej metodzie, przy każdym zapytaniu do bazy następuje jakaś tam konwersja znaków - a to zawsze trochę trwa, przy niewielkiej stronie pewnie można by to pominąć, ale przy większej ilości zapytań już wzrasta obciążenie serwera


dokładnie ! taka metoda odpada

a ja już częściowo rozwiązałem problem,
- eksportowałem całą bazę,
- podmieniłem wszystkie wystąpienia "& oacute;" na normalne "ó" w pajączku,
- przeinstalowałem, MySQLa i phpmyadmin, wszystkie konfigi tak jak powyżej podałem,
- tylko w phpMyAdmin/librares/config.default.php zakomentowałem linijke $cfg['Lang'] = 'pl-iso-8859-2';
- import
teraz już normalnie, zarówno pma wstawia/edytuje "ó" jak i zwykły formularz text/textarea również,
problem pozostał tylko w formularzach wysiwyg (konkretnie to TinyMCE) , ale to już temat na inną bajkę i chyba wiem gdzie się to zmieniało
Go to the top of the page
+Quote Post
FXJ
post
Post #62





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

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


Witam

Jest to mój pierwszy post na tym forum więc witam gorąco,
niestety mam podobny problem, próbowałem rozwiązać go
powyższymi sposobami, ale niestety zonk, a do plików Apache,
mySQL itp. nie mam dostępu.

Po pierwsze, mam dwie wersje bazy danych w postaci (fragment)
a) normalne polskie znaki
  1. INSERT INTO `kategoria` VALUES (1, 'Aktualności', 1, 1);

(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) kodowane znaki czyli ¶, ±, ľ itp.
  1. INSERT INTO `kategoria` VALUES (1, 'Aktualności', 1, 1);


Z którym plikiem bazy danych mam się "bawić"?

Mój cel to kodowanie iso, metodę porównywania znaków mam ustawione
na latin2_general_ci, w projekcie tabeli:

  1. DEFAULT CHARSET=latin2


No i mam znaki ? ? ? po imporcie na serwerze :/
Jakieś pomysły, po zmianie na binary wszystko cyka,
ale jak wrócę na np. varchar znów to samo.
Go to the top of the page
+Quote Post
dj_piotrek
post
Post #63





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

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


Mam podobny problem jak opisane powyżej z tą różnicą, że jak wchodze do myphpadmin i przeglądam dane z bazy to wszystko jest OK
Ale jak strona próbuje pobrać te same dane z bazy to większość poskich znaków zamienia się na znaki zapytania

"...Zespó? powsta? w Sopocie na prze?omie 1993/94 roku. Przez ten czas, wspó?pracowa? z ró?nymi muzykami zbieraj?c nowe do?wiadczenia. ..."

kod strony wygląda następująco

plik ./inc/common.php'

<?php
function db_connect()
{
@$link_id= mysql_connect("localhost","user","pass");
if(!$link_id)
{
return false;
}
if(!mysql_select_db("nazwa_bazy"))
{
return false;
}
return $link_id;
}
?>

plik index.php

<?php include('./inc/common.php');
$link_id=db_connect();
if(!$link_id) return "brak poł&plusmn;czneia z baz&plusmn;";
$sql = 'SELECT * FROM `program` WHERE ( `data` = \'2005-01-28\' )';
$wynik_pobierz=mysql_query($sql);
while($dane_pobierz=mysql_fetch_array($wynik_pobierz)){
$data_program=$dane_pobierz["data"];
$data_program=strtotime($data_program); //zamienia na formayt uniksowy
$data_program=date("d-m-Y",$data_program); // konweruje w formacjie d-m-r
$tytul_program=$dane_pobierz["tytul"];
$tytul_program=stripslashes($tytul_program);
$opis_program=$dane_pobierz["caly"];

echo "<table>";
echo"<tr><td><B>$data_program</b></td></tr>";
echo "<tr><td>$tytul_program</td></tr>";
echo "<tr><td>$opis_program</td></tr>";
}
?>

to wszystko jest odpalone na debianie , co mogę zrobić, żeby normalnie odczytywać znaki polskie na stronie??
Go to the top of the page
+Quote Post
WereWolf
post
Post #64





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.05.2005

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


Cytat(dj_piotrek @ 6.02.2007, 01:21:10 ) *
to wszystko jest odpalone na debianie , co mogę zrobić, żeby normalnie odczytywać znaki polskie na stronie??

dwa pytania:
1. czy masz na samej stronie w htmlu ustawione informacje o kodowaniu znaków? (meta)
2. w jakim kodowaniu masz dane w bazie? jeśli w phpmyadminie wszystko wyświetla się poprawnie, to podejrzewam, że wystarczy dodać zapytanie przy łączeniu się z bazą danych - o tym było już wcześniej... np. jeśli dane są w iso-8895-2, to po mysql_connect dodaj: mysql_query("set names latin2")
Go to the top of the page
+Quote Post
VegetaSSJ
post
Post #65





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 21.10.2006

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


Witam!

A ja mam problem taki że nie wiem jak wstawiać polskie znaki do bazy przez stronę www. Wszsystkie ustawienia mam na latin2 i iso-8859-2. Ustawienia Apache 2.0.59, PHP 5.1.6, phpMyAdmin-2.9.2, i MySQL 5.x mam takie jak podał kolega @woodzu.

W index.php mam następujący przykładowy kod:

  1. ...
  2. <html xml:lang="pl" lang="pl" xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  4. ...
  5.  
  6. <?php
  7. $db = new mysqli('localhost', 'root', '***', 'ZSRDB');
  8. db -> query('SET CHARACTER SET latin2');
  9. db -> query('SET collation_connection = latin2_general_ci');
  10. $db -> query("insert into ogloszenia (TYTUL, TRESC, AUTOR, TYP) values ('tytul', 'żźćąęół', 'autor', 1)");
  11. $zapytanie = "select * from Ogloszenia";
  12. $wynik = $db -> query($zapytanie);
  13. $wiersz = $wynik -> fetch_assoc();
  14. echo $wiersz['TRESC'];
  15. ?>


Kiedy wstawiam dane do bazy przy użyciu poniższej instrukcji z poziomu index.php

  1. <?php
  2. $db -> query("insert into ogloszenia (TYTUL, TRESC, AUTOR, TYP) values ('tytul', 'żźćąęół', 'autor', 1)");
  3. ?>


po ich wyświetleniu w tym samym skrypcie zamiast kogonków są krzaki.

Kiedy wstawię te same dane przy użyciu phpMyAdmin-2.9.2 po ich wyświetleniu w index.php tekst jest normalny, czyli ogonki są.

Proszę o pomoc w odpowiedzi na pytanie jak wstawiać do bazy dane przy użyciu formularza www, ewentualnie bezpośrednio ze skryptu php aby po ich wyświetleniu nie zgubiły się ogonki.
Go to the top of the page
+Quote Post
acztery
post
Post #66





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


daj takie cos przed dodaniem i przed wyciaganiem danych z bazy

  1. <?php
  2. $db->query("set names 'iso-8859-2");
  3. ?>


powinno pomóc, mi zawsze działa z tym ze nie stosuje iso od dawno. Polecam utf-8 mniej klopotów
Go to the top of the page
+Quote Post
Spanner
post
Post #67





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.12.2004
Skąd: KrK

Ostrzeżenie: (10%)
X----


widze, ze połączenie masz na clasach, wię ja bym do classy łączącej się z bazą dał takie coś
  1. <?php
  2. mysql_query('SET character_set_connection=latin2', $this->connection_id);
  3. mysql_query('SET character_set_client=latin2', $this->connection_id);
  4. mysql_query('SET character_set_results=latin2', $this->connection_id);
  5. mysql_query('set names latin2;');
  6. ?>
zaraz po nawiązaniu połączenia z bazą,wtedy od razu odpada ci wszelkie dodatkowe zapytania, pamiętanie o nich itp

Ten post edytował Spanner 22.02.2007, 15:19:49
Go to the top of the page
+Quote Post
WebCM
post
Post #68





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Aby nie tworzyć nowego tematu, dołączę pytanie tutaj.

Zaktualizowałem pakiet WebServ - więc PHP z 5.1.5 nad 5.2.3 i MySQL z 4 na 5. Teraz w przeglądarce nie wyświetlają się polskie znaki w pobranych danych z bazy. Aktualizacja rekordów z poziomu PHP też nic nie daje. MySQL 5 dodatkowo jeszcze posiada mechanizm porównywania znaków.

Fragment my.ini:
Kod
language=c:/usr/mysql/share/polish

character-set-server=latin2
default-character-set=latin2

Zmienne MySQL:
Kod
character_set_system=utf8 (I tego nie mogę zmienić)
Pozostałe zmienne - collation_* i character_set_* (opr. _filesystem = binary) mają wartość LATIN2.

Tabele również mają kodowanie latin2, lecz nie mogą zapamiętać porównania znaków (ustawiam latin2_general_ci, nie ma polish_ci), chyba że MySQL-Front po prostu ich nie odczytuje.

Pomaga dopiero poniższe zapytanie wywołane po rozpoczęciu połączenia:
Kod
SET CHARACTER SET 'latin2'
Tylko dla nowo wprowadzonych danych.

Czym to jest spowodowane? Nieprawidłową konwersją bazy danych? Czy da się ten problem ominąć bez dodatkowego zapytania, czy w skryptach dla MySQL 5 to raczej standard? A może lepiej postawić na UTF?
Go to the top of the page
+Quote Post
Aztech
post
Post #69





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Niedawno odkryłem cudowne rozwiązanie na wszelkie problemy związane z kodowaniem. Czasami zdarza się, że mimo wpisania wszystkich ustawień w plikach konfiguracyjnych nadal mamy krzaczki, ew. musimy przed każdym zapytaniem ustawiać CHARACTER SET. Ten wpis w my.ini załatwia większość problemów:
Kod
skip-character-set-client-handshake
Go to the top of the page
+Quote Post
patrycjusz
post
Post #70





Grupa: Zarejestrowani
Postów: 263
Pomógł: 0
Dołączył: 13.07.2003
Skąd: wawa

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


Witam,

Odgrzewam temat bo mam spory problem, otóż,
<span style="font-weight: bold;"><a href="http://pl.php.net/baza mysql z której eksportuje ma:character set client utf8character set connection utf8character set database utf8character set filesystem binarycharacter set results utf8character set server utf8character set system utf8character sets dir C:\Dev\MySQL\share\charsets\collation connection utf8_general_cicollation database utf8_general_cicollation server utf8_general_ci" title="Zobacz w manualu PHP" target="_manual">baza mysql z której eksportuje ma:
character set client utf8
character set connection utf8
character set database utf8
character set filesystem binary
character set results utf8
character set server utf8
character set system utf8
character sets dir C:\Dev\MySQL\share\charsets\
collation connection utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci</a></span>
niby wszystko ok, tabele mają:
  1. CREATE TABLE `classes_fields` (
  2. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


i nie zależnie od tego, z czego robie dump'a (mysqdump, phpmyadmin, mysql administrator) wali takimi o to krzakami:Aktualność , Treść, Nagłówek.
Jak otworze plik dump.sql poprzez notatnik to widzę kodowanie pliku ładnie UTF-8.

Dodam, że serwer http (po drodze żadnej konwersji nie ma) na localhoście wyświetla pięknie utf-8 bez krzaków. Tylko w dumpie są.

Może jakieś koncepcje?

pozdrawiam,
patS

P.S. Dodatkowa zagadka, poprawnie już mi się udało go wyeksportować, za pomocą komendy: C:\Dev\MySQL\bin>mysqldump.exe -u root -p --default-character-set=latin1 kig > c:\Dump.sql - plik otwieram w notepadzie - wskazuje utf-8 i nie ma żadnych krzaków 9poza &oacute.

ha!

sam sobie odpowiem, dla potomnych jakby ktoś kiedyś miał problem:

1. mysqldump.exe -u root -p --default-character-set=latin1 kig > c:\Dump.sql
2. w notatniku zamieniamy kodowanie z utf8 z sygnaturą na utf8 i dopisujemy set names 'latin2'
3. importujemy z phpmyadmina i wybieramy jako kodowanie pliku utf8



pzdr, patS

Ten post edytował patrycjusz 8.10.2007, 11:38:07
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 8.12.2025 - 18:25