Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Rosyjskie znaki
Forum PHP.pl > Forum > Bazy danych > MySQL
Czadus
Witam. Mam wielki problem z umieszczeniem rosyjskich znaków w bazie danych MySQL. Problem jest tym większy, że na localhost wszystko działa poprawnie. Dodam, że wpisy te wymagane są przeze mnie do wykorzystania w wyszukiwarce. I teraz tak, moje dane dotyczące bazy:

System kodowania znaków dla MySQL: ISO 8859-2 Central European (latin2)
System porównań dla połączenia MySQL: UTF-8

I teraz moja tabela ma następującą strukturę:

CREATE TABLE `produkty` (
`id` int(3) NOT NULL auto_increment,
`typ` varchar(30) NOT NULL,
`nazwa_pl` varchar(40) NOT NULL,
`nazwa_en` varchar(40) NOT NULL,
`nazwa_de` varchar(40) NOT NULL,
`nazwa_ru` varchar(40) NOT NULL,
`kod` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=74 ;

I teraz dodając w pole nazwa_ru tekst postaci, np: Спальный мешок No3, otrzymuję w tm polu w rzeczywistości treść postaci:
&# 1057;&# 1087;&# 1072;&# 1083;&# 1100;&# 108
Zmuszony byłem wstawić spacje pomiędzy znak # a 1, bo forum mi to konwertowało do tekstu.

Pola `nazwa_pl`, `nazwa_en`, `nazwa_de`, `nazwa_ru` mają ustawione system porównywania na utf8_general_ci

Dodam, że nie ma to wszystko nic wspólnego z php, bowiem cały czas operuje poprzez PHPMyAdmin.
q3d
Zdaje sobie sprawę, że to nie odpowiedź na Twoje pytanie ale może jednak zastanowisz się czy jest sens tworzenia kolumn nazwa_pl, nazwa_ru, itp.
Nie lepiej miec jedna kolumnę (nazwa), w której będziesz przechowywał nazwę zmiennej z pliku językowego, np. $_NAME = 'name', a następnie np.:
  1. <?=$$res['nazwa'];?>
Czadus
Hmmmm, to też jest rozwiązanie.

Aczkolwiek ja przypuszczam już gdzie tkwi błąd.

Na localhost System kodowania znaków dla MySQL ustawiony mam na UTF8, natomiast na serwerze testowym jest to ISO 8859-2 Central European (latin2). To samo zrobiłem na serwerze głównym, tj docelowym dla strony i tam już wszystko działa poprawnie. A wartość dla System kodowania znaków dla MySQL na serwerze głównym, to również UTF8. Stąd też mój wniosek, że za całość błędów winę ponosi nieprawidłowe ustawienie dla Systemu Kodowania znaków dla MySQL.
q3d
Jeżeli zaproponowana przez Ciebie struktura nie ma uzasadnienia (ciężko mi je znaleźć) to sie nie zastanawiaj i zrób jedną kolumnę. Będziesz w niej przechowywał nazwę zmiennej w j.angielskim (a przynajmniej bez znaków spoza tablicy ASCII) i żadne kodowanie bazy (nawet mongolskie) nie będzie Ci straszne. Plik językowy robisz w sobie w UTF i problem z głowy. Odpowiedni plik językowy załączasz w zależności od parametru w adresie skryptu i tyle.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.