Skocz do zawartości

Web Hosting Talk

  • progreso.pl

    Partner technologiczny

    Upraszczamy to, co inni starają się komplikować. Prosto, pewnie, przyjaźnie - tak robimy hosting!
  • Kei.pl

    Partner technologiczny

    Kei.pl działa na polskim rynku internetowym od 2000 roku. Obecnie na blisko 300 serwerach w Centrum Danych Kei.pl znajduje się kilkadziesiąt tysięcy stron WWW.
  • S-NET.info

    Partner technologiczny

    S-NET to dostawca usług dla biznesu. Najważniejsze usługi świadczone przez firmę to usługi Centrum Danych, dostęp do Internetu, transmisja danych oraz tranzyt do różnych operatorów.
  • Sprint Data Center

    Partner technologiczny

    Sprint Data Center to jedyne w Polsce północno-wschodniej i jednocześnie jedno z najnowocześniejszych w kraju centrum przechowywania i przetwarzania danych.

 

[mysql] nie zapisują się znaki takie jak wielokropek, dolny cudzysłów


  • Nie możesz odpowiadać w tym temacie
11 odpowiedzi na ten temat

[mysql] nie zapisują się znaki takie jak wielokropek, dolny cudzysłów

#1 neb

    Nowy użytkownik

  • Użytkownicy
  • 4 postów

Napisany 06 sierpień 2008 - 15:58

Witam wszystkich,
Niedawno zauważyłem, że w moim programie php korzystającym z mysql istnieje pewien problem: jeśli dodam do bazy tekst ze znakami takimi jak … – „ “ ” lub znaki obcymi jak np. è , to gdy chcę ten tekst pobrać z bazy wyświetlają się one jako znaki zapytania (?). HTML i PHP jest w UTF-8, do mysql zawsze wysyłam SET NAMES 'utf8' , czyli wszędzie kodowanie jest takie samo, więc to chyba nie ono jest przyczyną.

Co więc może nią być?

Będę wdzięczny za odpowiedź. Od wczoraj się nad tym głowię. Szukałem w internecie czy ktoś już miał taki problem, ale za bardzo nie wiem jak to ująć. Dziwne jest to, że z polskimi znakami nie ma problemu a z np. è jest. Myślałem, ze może to wina mojej przeglądarki (brak odpowiednich czcionek lub coś takiego), ale na innych stronach wyświetlają mi się è itp.

#2 sproject

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 363 postów
  • Skąd:Płock
  • Imię:Piotr

Napisany 06 sierpień 2008 - 16:02

Na 100% jest to problem z kodowaniem, ale jaki konkretnie - ciężko powiedzieć.

//Wymyśliłem. :) Zapewne wpisujesz te znaki bezpośrednio, a one mają swój UTFowy znacznik. Musisz korzystać z niego...

Tutaj masz ich wykaz: http://www.utf8-char...le.pl?htmlent=1

#3 neb

    Nowy użytkownik

  • Użytkownicy
  • 4 postów

Napisany 06 sierpień 2008 - 16:36

Sprawdziłem kilka znaków i działa - dziękuję!

tylko, jesli dobrze zrozumiem, mam teraz dla kazdego tekstu wrzucanego do bazy robić kilkadziesiąt str_replace(znak, kod, $aaa)? Czy może jest jakaś funkcja która to robi automatycznie?

#4 sproject

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 363 postów
  • Skąd:Płock
  • Imię:Piotr

Napisany 06 sierpień 2008 - 17:05

Zdaje się, że konieczna będzie ręczna zamiana znaków.

#5 jarek

    najsss ;f

  • Użytkownicy
  • PipPipPipPipPipPipPipPip
  • 1682 postów

Napisany 06 sierpień 2008 - 17:08

gżegżółka?

Hosting WWW @ ViPower.pl
Serwery VPS / dedykowane @ ViHost.pl


#6 sproject

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 363 postów
  • Skąd:Płock
  • Imię:Piotr

Napisany 06 sierpień 2008 - 17:12

Zobacz postjarek, o 6.08.2008, 18:08, powiedział:

gżegżółka?
Notatnik? xD

#7 semilor

    Czasami na forum

  • Użytkownicy
  • 37 postów

Napisany 06 sierpień 2008 - 17:29

Cytuj

Czy może jest jakaś funkcja która to robi automatycznie?
htmlentities()

#8 Noone

    Weteran WHT

  • Użytkownicy
  • PipPipPipPipPipPipPipPip
  • 517 postów

Napisany 06 sierpień 2008 - 18:42

A w jaki sposób w php i html to robisz? Wysyłasz nagłówki czy meta?

#9 neb

    Nowy użytkownik

  • Użytkownicy
  • 4 postów

Napisany 06 sierpień 2008 - 22:01

Cytuj

A w jaki sposób w php i html to robisz? Wysyłasz nagłówki czy meta?
Pliki zapisane są w UTF-8, meta jest ustawione na UTF-8 i nagłowek zrobiłem na "application/xhtml+xml; charset=utf-8".

Zrobiłem taki test:
-----------------------------------------------------
$a = <problematyczne znaki>;
echo $a;
<dodanie do bazy $a>
$a_new = <odczytanie z bazy $a>
echo $a_new
-----------------------------------------------------
Pierwsze 'echo' wyswietla się poprawnie, drugie - nie, czyli z tego by wynikało, że winna jest baza danych.

Cytuj

htmlentities()
Działa! ... ale zamienia też na znaczniki polskie litery, więc i tak musiałbym póżniej robić kilka str_replace(kod, polska_litera,$a)

#10 Noone

    Weteran WHT

  • Użytkownicy
  • PipPipPipPipPipPipPipPip
  • 517 postów

Napisany 07 sierpień 2008 - 06:13

To w takim razie jaką masz w bazie metodę porównywania napisów (per kolumna/tabela)? Chodzi o kolumna varchar collate... przykładowo.

#11 neb

    Nowy użytkownik

  • Użytkownicy
  • 4 postów

Napisany 07 sierpień 2008 - 10:29

Dokładnie się na tym nie znam ... oto co jest w confie, to chyba coś z tego bedzie:

character_set_results: latin1

character_set_server: latin1

character_set_system: utf8

collation_connection: latin1_swedish_ci

collation_database: latin1_swedish_ci

collation_server: latin1_swedish_ci

Na razie poradziłem sobie tak, że wszystkie dane zapisywane do bazy przepuszczam przez htmlentities(), a odczytywane z niej przez html_entity_decode().

#12 Noone

    Weteran WHT

  • Użytkownicy
  • PipPipPipPipPipPipPipPip
  • 517 postów

Napisany 07 sierpień 2008 - 12:18

Ustaw to poprawnie na utf-8 to nie będzie problemu. I zobacz http://l.tworzenie-stron-www.org/artykuly/...Na_Stronach_Www na dole (masz też odpowiedni link do dokumentacji)





1 Użytkowników czyta ten temat

0 użytkowników, 1 gości, 0 anonimowych użytkowników