проблема с характером mysql utf8 - PullRequest
1 голос
/ 10 марта 2011

Я установил весь набор символов как "utf8" на страницах, я установил все параметры сортировки (также сопоставления полей) как utf8_general_ci в базе данных, и я добавил этот код в connect.php

mysql_set_charset('utf8',$connect);
mysql_query("SET NAMES 'utf8'");

Хотя все работает, когда я запускаю этот запрос:

"SELECT * FROM titles WHERE title='toruń'"

Результат: возвращает «toruń» и «torun», которые являются разными словами.

Так что вы думаете?
В чем проблема?

Спасибо!

EDIT:

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ titles
(
id int (11) NOT NULL AUTO_INCREMENT,
title varchar (255) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (id),
КЛЮЧ title (title),

) ДВИГАТЕЛЬ = CHISSET ПО УМОЛЧАНИЮ MyISAM = utf8 AUTO_INCREMENT = 37;

Ответы [ 3 ]

3 голосов
/ 10 марта 2011

Проблема в том, что выбранная вами сортировка предназначена для игнорирования этого конкретного акцента (и, скорее всего, акцентов в целом).

Если вы планируете хранить определенный язык, а не несколько разных языков, попробуйте использовать utf8_(language)_ci (если этот язык отсутствует, возможно, существует другой язык, похожий на ваш). В противном случае, вы можете попробовать utf8_unicode_ci, который использует алгоритм сопоставления Unicode, но я не уверен, что этот разграничивает.

Вы также можете использовать utf8_bin, который гарантированно считает их различными, но это происходит за счет потери нечувствительности к регистру, что, скорее всего, хуже.

Сказав это, это не обязательно плохо: игнорируя акценты, поиск будет более гибким и простым в использовании для людей, которые не могут набрать определенный символ.

0 голосов
/ 10 марта 2011

вы хотите utf8_bin, * _ci нечувствителен к регистру, поэтому акценты обрабатываются как обычная буква

0 голосов
/ 10 марта 2011

попробуйте использовать utf8_encode .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...