Подтвердить что ты не робот

Проблема сортировки шведских символов Å Ö MySQL

Я пытаюсь сортировать список с asc или desc - в зависимости от того, что пользователь выбирает. В списке у меня есть шведские символы Å... и здесь проблема возникает. У меня есть следующий список:

(First list)
Stängd
Stängd
Öppen
Krävs ej
Krävs ej

(Постоянное, Stängd = Закрыто, Öppen = Открыто, Krävs ej = Не требуется)

Список должен быть отсортирован - в зависимости от того, что пользователь выбирает;

Öppen
Stängd
Stängd
Krävs ej
Krävs ej

или

Krävs ej 
Krävs ej
Stängd 
Stängd 
Öppen 

Но, как сейчас, появляется первый список. Таким образом, проблема заключается в "..." -характере. Моя база данных и поле, в котором находится значение, имеют сортировку utf8_general_ci, так что это не проблема. И символ "..." прав в обеих базе данных (смотрящий через PHPMyAdmin) и выводит прямо при печати. ​​

Мой код выглядит так:

$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id
    AND wpostmeta.meta_key = '$sort_by'
    AND wposts.post_type = 'sida'
    AND wposts.post_status = 'publish'
    ORDER BY wpostmeta.meta_value $sort_order";

Как это может выглядеть и как я его решаю?

4b9b3361

Ответ 1

Моя база данных и поле, в котором находится значение, имеют сортировку utf8_general_ci, так что is'nt проблема

Но это так.:) Различные сортировки имеют разные порядки сортировки и разные способы интерпретации умлаутов.

utf8_general_ci будет сортировать Ö с помощью O. Вместо этого попробуйте utf8_swedish_ci. Это будет иметь правильный порядок сортировки, который (IIRC) заключается в том, что ÄAÖ подходит к концу алфавита.

Для получения дополнительной информации см. 9.1.7.8. Примеры влияния сортировки

Ответ 3

Если вы хотите преобразовать существующие таблицы в новую сортировку, используйте только следующее:

alter table [tableName] convert to character set utf8 collate utf8_swedish_ci;