![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Czy jest jakaś funkcja/ustawienie które pozwoli mi kodować bazę danych tak aby polskie znaczki zapisywane były w postaci np: "Ą ;" zamiast Ą . Wiem że mogę zrobić to z poziomu php wyszukując polskie znaki w stringu i zamieniać na ich numeryczną postać ale jeśli tekst byłby długi to taka funkcja trochę czasu by trwała. Czy jest możliwość zrobienia tego z poziomy bazy danych?? Z góry dziękuję z podpowiedź. Ten post edytował maknus 31.01.2011, 10:50:11 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim pamiętaj o tym, że kodowanie musi być wszędzie zgodne (utf8), to znaczy takie samo w skrypcie php, takie samo w bazie i takie samo na stronie. Odnośnie kodowania w bazie to poszczególne kolumny tekstowe (najlepiej całe tabele) powinny mieć ustawione kodowanie z rodziny utf8_XXX_ci/utf8_XXX_cs, gdzie XXX może być jednym z ciągów: general, polish, unicode. Czyli np. utf8_general_ci. Jeśli chodzi o funkcje w php pomagające zachować jednolite kodowanie:
Pamiętaj też, że samo kodowanie skryptu php powinno być utf8 bez znacznika bom (byte of mark), można,a nawet trzeba to ustawić (jeśli nie jest ustawione) w edytorze, z którego korzystasz, a jeśli nie, to zmień edytor. // edit w mysql są funkcje
Ten post edytował darko 31.01.2011, 10:51:08 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedź ale z kodowaniem znaków na stronie nie mam problemów. Chodzi o to, iż mam dodatkową aplikację która pobiera dane z bazy mysql i ona potrzebuje aby polskie znaki były kodowane w sposób "Ą ;" zamiast Ą itd.. bo inaczej tego nie obsłuży. Chciałbym to zrobić na poziomie bazy danych, aby polskie znaki zapisywane były w takim formacie ("Ą ;" zamiast Ą). Myślałem nad zrobieniem procedury, która by robiła podmianę i triggera, który by tą procedurę wywoływał po insercie. Ale nie wiem czy to najlepszy pomysł (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Lepiej to zrobić już w samej aplikacji w php, gdyż dane poprawnie zakodowane w bazie mogą się przydać w innym celu:
Powinno się dać jeszcze prościej to zrobić za pomocą jakiejś funkcji, której nazwy niestety nie pamiętam w tym momencie. Sorry ale chyba nie da się tutaj tego wkleić, bo niepoprawnie wyświetla, w każdym razie ta druga tablica składa się z elementów zaczynających się od ampersandu i hasha, a kończy średnikiem, a pomiędzy są następujące wartości: 261 260 263 262 281 280 322 321 324 323 243 211 347 346 378 377 380 379 Ten post edytował darko 31.01.2011, 11:21:33 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Niestety potrzebuję tego na poziomie bazy danych, aby już dane były w tym formacie w niej zapisane, przepuszczać każdego stringa przed insertem i update przez funkcje php zmieniającą to strasznie dużo roboty dlatego szukam prostszego rozwiązania najlepiej na poziomie bazy danych.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Niestety potrzebuję tego na poziomie bazy danych, aby już dane były w tym formacie w niej zapisane, przepuszczać każdego stringa przed insertem i update przez funkcje php zmieniającą to strasznie dużo roboty dlatego szukam prostszego rozwiązania najlepiej na poziomie bazy danych. To będzie tak samo, jak w php tylko za pomocą mysql'owej funkcji replace |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
To teraz z innej strony (IMG:style_emoticons/default/smile.gif)
Napisałem sobie taką małą procedurę do zmiany polskich liter, w skrócie wygląda ona tak:
Tylko że nie chce dodać mi przyjąć tego 'ą'. Jeśli dam REPLACE(tekst,'b','a') nie ma problemu działa ale jak daje REPLACE(tekst,'ą','a') to mi się wywala. Z góry dzięki za podpowiedź |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To jest chyba ten bug mysql ale nie jestem pewien, ogólnie u mnie raczej słabo z procedurami/funkcjami. Sprawdziłem za to samo replace w zapytaniu i u mnie działa.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 09:27 |