MySQL metoda porównywania napisów

0

Jaką powinienem wybrać metodę porównywania napisów żeby aplikacja mogła przyjąć możliwie najwięcej wariantów jezykowych?
Mam ustawione utf-8_bin i w miejsce polskich znaków wstawia mi "?". Domyślam się, że jak wybiorę utf-8_polish to będzie ok ale jakbym chciał też obsłużyć cyrylicę lub jakieś elementy z hiszpańskiego czy niemieckie umlauty?
próbowałem zgodnie z tym opisem http://www.php.pl/Wortal/Artykuly/Pomysly-porady-sugestie-dobre-nawyki/Polskie-znaki-a-MySQL/Polskie-znaki-a-MySQL
Ale dalej nie działa jak należy

0

to o co pytasz to sposób porównywania i jako taki nie ma on nic wspólnego z przechowywaniem oraz wyświetlaniem lub nie znaków narodowych. To, że gdzieś coś ci pokazuje ? zamiast pl literek nie ma nic wspólnego z porównywaniem (collation).

Jesteś tutaj na tyle długo, że powinieneś wiedzieć, że stwierdzenia typu Ale dalej nie działa jak należy możesz sobie w oko cyklopa wsadzić. Żalisz się czy pomocy szukasz?
Jaki CHARACTER SET ma baza i tabela w której próbujesz trzymać dane oraz jak masz zdefiniowane pole w tabeli, które te dane ma tzymać?

0

Nie miałem wcześniej większego doświadczenia z mysql dlatego myślałem, że metoda porównywania może mieć coś do tego.

Baza:
Kodowanie znaków serwera: UTF-8 Unicode (utf8)
tabela: jw utf8
kolumny to zwykłe varchary i tez maja utf8

abrakadaber napisał(a):

Jesteś tutaj na tyle długo, że powinieneś wiedzieć, że stwierdzenia typu Ale dalej nie działa jak należy możesz sobie w oko cyklopa wsadzić. Żalisz się czy pomocy szukasz?

Zwykłe zdanie działa na Ciebie jak płachta na byka? Co w tym takiego złego napisałem co zrobiłem i że nie tu problem - proste.

0

daj DDL tabeli, jak wstawiasz i wyświetlasz dane

0
--
-- Struktura tabeli dla tabeli `newscomments`
--

CREATE TABLE IF NOT EXISTS `newscomments` (
`id` int(11) NOT NULL,
  `newsId` int(11) NOT NULL,
  `authorId` int(11) NOT NULL,
  `date` timestamp NOT NULL,
  `content` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
  `visible` varchar(5) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=38 ;

--
-- Indexes for table `newscomments`
--
ALTER TABLE `newscomments`
 ADD PRIMARY KEY (`id`), ADD KEY `FK_r29uxnxm6am10nuf3f40l1uo3` (`authorId`);

Jesli chodzi o wyciąganie i wstawianie danych to masz na mysli selecty jakie lecą?

0

nie mam na myśli gdzie (skąd) te selecty/insery/update wywołujsze

0

JPA(Hibernate) to za mnie robi podesłać logi selectów?
Dodam tylko, że debugowałem aplikację i do bazy idzie co trzeba a w bazie wstawiają się ?? w polskie znaki.

0

ja pierdziele naprawdę tak ciężko ci napisać konkretnie co tam robisz??? JPA, czyli pewnie JAVA ale aplikacja okienkowa czy strona? Czym sprawdzałeś dane w bazie? Ściągnij jakiegoś managera do mysqla (od biedy może być nawet phpmyadmin) i zobacz tak

1

@Heppek nie ustawiłeś kodowania stąd ta sytuacja - powinieneś tuż po połączeniu z bazą wywołać req do serwera bazy danych typu set names 'latin2' lub set names 'utf8' - w zależności od kodowania serwera.

Możesz też spróbować za pomocą jdbc url, który wymusi takie zapytanie:
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8

1 użytkowników online, w tym zalogowanych: 0, gości: 1