Skocz do zawartości

Rekomendowane odpowiedzi

Dzień dobry,

Ktoś może wie w jaki sposób można zrobić tak by baza danych odczytywała polskie znaki / znaki specjalne ?

Chciałbym ułatwić sobie wyszukiwanie poszczególnych graczy bo po krzakach nic z tego nie budiet 🙂

bazadan.PNG.365cf4fc04a2efc95c294e451ea7612e.PNG

 

P.S Jeśli nie ten dział proszę o przeniesienie do odp. bo nie wiedziałem gdzie go wrzucić.

Pozdrawiam,

Sygnatura użytkownika

[PL] 1shot2kill.pl | Arena 1vs1 • 128 Tick 137.74.5.141:27015

Odnośnik do odpowiedzi
Udostępnij na innych stronach
db.SetCharset("utf8mb4");


Przed zapytaniem do bazy.
 

A potem db.Query("xx");

 

Warto też przy tworzeniu tabel w pluginie ustawić odpowiednie kodowanie znaków

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mógłbyś to zobrazować gdzie to dopisać bo nie mam zielonego pojęcia?

Na jendym koncie  bazy danych mam kilka osobnych pluginów pod nią podpiętą

 

Sygnatura użytkownika

[PL] 1shot2kill.pl | Arena 1vs1 • 128 Tick 137.74.5.141:27015

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Podaj link do pluginu który używasz, i który pracuje na tej bazie / tabeli którą załączyłeś.

 

A jeżeli nie możesz/nie masz sp to w takim razie mogę to wytłumaczyć w jeden sposób.

Przed zapytaniem do bazy gdzie "inserujesz" czyli przekazujesz dane musisz ustawić charset tzw. Kodowanie znaków, ich typ.

Dzięki czemu przed zapytaniem wszystkie znaki specjalne zostaną rozpoznane i przekazane prawidłowo do bazy.

Ja to rozwiązuje w taki sposób w moich pluginach

 

char query[1024];	
Format(query, sizeof(query), "Zapytanie do bazy INSERT INTO ETC ETC");
db.SetCharset("utf8mb4");	
db.Query(DB_CallBack, query);

 

To samo tyczy się tworzenia tabel w bazie.

Warto dodać na końcu zapytania coś takiego:
 

ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

 

Polecam używać właśnie utf8mb4_general_ci gdyż dość że wspiera polskie znaki to jeszcze symbole które gracze sobie ustawiają w grze.

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
Godzinę temu, Mesharsky napisał:

db.SetCharset("utf8mb4");

Wystarczy to zrobić przy połączeniu z bazą, nie trzeba tego robić przy każdym zapytaniu

Sygnatura użytkownika

__________________________________________________________________________________________________________________________________________________________________________
【 Deathrun    |    Deathrun Sklep    |    Deathrun VIP    |    Deathrun AutoRespawn    |    Jackpot    |    Losowy VIP    |    Modele  |   NoScope Detector    |    C4 Timer 
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 minuty temu, Brum Brum napisał:

Wystarczy to zrobić przy połączeniu z bazą, nie trzeba tego robić przy każdym zapytaniu

Też tak myślałem, jednakże w niektórych moich projektach trzeba było też dodać SetCharset tuż przed zapytaniem.
Czemu?

Do dzisiaj nie wiem, jednak nie powoduje ta linijka niczego co mogłoby wpłynąć na wydajność więc nie ma się o co martwić.
Dodatkowe zabezpieczenie że wszystko będzie działać jak należy.

 

Niech się autor pobawi i da znać ewentualnie jak to rozwiązał.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
5 godzin temu, devel napisał:

Zamiast zmieniać metodykę wysyłania zapytania do bazy możesz po prostu przeformatować bazę 😄

solved? solved

Jeżeli zmienisz typ danych w bazie przez phpmyadmin a plugin będzie wysyłać dane z innym kodowaniem to rekordy dalej będą się zapisywać błędnie.

Odnośnik do odpowiedzi
Udostępnij na innych stronach

https://github.com/nuclearsilo583/zephyrus-store-preview-new-syntax

 

Pytałem także twórcy jakiś czas temu i powiedział że 

"sorry i cant help cuz mysql cant read any special symbol"

Więc nie wiem jak to odebrać. Dodatkowo w tym pluginie jest bardzo dużo kodu związanego z bazą o którym kompletnie nie mam pojęcia.

Sygnatura użytkownika

[PL] 1shot2kill.pl | Arena 1vs1 • 128 Tick 137.74.5.141:27015

Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

 

L 06/05/2021 - 20:33:13: [store.smx] SQL error happened.
Query: CREATE TABLE IF NOT EXISTS `store_players` (`id` int(11) NOT NULL AUTO_INCREMENT,`authid` varchar(32) NOT NULL,`name` varchar(64) NOT NULL,`credits` int(11) NOT NULL,`date_of_join` int(11) NOT NULL,`date_of_last_join` int(11) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id` (`id`),UNIQUE KEY `authid` (`authid`) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci)
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci)' at line 1
L 06/05/2021 - 20:33:13: [store.smx] SQL error happened.
Query: CREATE TABLE IF NOT EXISTS `store_logs` (`id` int(11) NOT NULL AUTO_INCREMENT,`player_id` int(11) NOT NULL,`credits` int(11) NOT NULL,`reason` varchar(256) NOT NULL,`date` int(11) NOT NULL,PRIMARY KEY (`id`) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci)
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci)' at line 1

 

Te  się utworzyły jednak zapytanie edytowane przez ciebie w ogóle sie nie pojawiło tylko error

store_equipment
store_items
store_menu

Sygnatura użytkownika

[PL] 1shot2kill.pl | Arena 1vs1 • 128 Tick 137.74.5.141:27015

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tym razem działa bezbłędnie wielkie dzięki

1.PNG.692e577907e5972a2a78bf1550f3711b.PNG

 

Mam jeszcze pytanko czy to tak może pozostać i nic nie będzie się z tym działo ?

Jest to inny typ bazy nie wiem dokładnie o co chodzi ale jest inne z pośród reszty tabel

2.thumb.PNG.b1f6a7fc71b806999d13fa4754a663d6.PNG

Sygnatura użytkownika

[PL] 1shot2kill.pl | Arena 1vs1 • 128 Tick 137.74.5.141:27015

Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 minuty temu, -Gamer- napisał:

Tym razem działa bezbłędnie wielkie dzięki

1.PNG.692e577907e5972a2a78bf1550f3711b.PNG

 

Mam jeszcze pytanko czy to tak może pozostać i nic nie będzie się z tym działo ?

Jest to inny typ bazy nie wiem dokładnie o co chodzi ale jest inne z pośród reszty tabel

2.thumb.PNG.b1f6a7fc71b806999d13fa4754a663d6.PNG

 

Wszystko powinno działać jak należy.

Zawsze możesz sobie przerobić zapytania inne na to samo co ja zrobiłem z store_players ale to już kwestia kosmetyki.
To czy tabela jest InnoDB czy MyISAM nie powinno mieć wpływu na działanie pluginu.

Ale cieszę się że mogłem pomóc 🙂 

W razie problemów, raportuj post by ponownie otworzyć temat.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Mesharsky zmienił tytuł na [ Rozwiązane ] Czyt. polskich/specjalnych znaków w Mysql
  • Mesharsky zamknął ten temat

Ostatnio przeglądający ten temat (5 użytkowników)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...