|
|
|
| Есть база немецких городов.
Вывожу их на страницу запросом:
SELECT *
FROM `city`
ORDER BY `city`
Среди этих городов есть те, которые начинаются на умляуты:
Öhningen
Östringen
Überlingen
Это города с немецкими буквами, которые с двумя точками наверху :) (не знаю, как называются).
Проблема в том, что при сортировке по алфавиту выводятся сначала названия с & и уже потом все остальное. Как сделать так, чтобы вначале шли буквы по алфавиту, а после уже эти проблемные названия?
В базе на данный момент 6 тысяч городов, и сейчас ее еще дополняют. | |
|
|
|
|
|
|
|
для: Лена
(29.06.2010 в 20:16)
| | буквы с умляутами есть в разных кодировках, начиная latin1 и кончая utf8
их совсем необязательно так мерзко кодировать.
Понятно, что в windows-1251 их нет, и на этом форуме отобразить названия не получится. | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2010 в 20:20)
| | Таблицы базы я переводила из 1251 в utf8, поэтому кодировала это не я.
Я пробовала менять их на буквы в utf8 - не меняется. | |
|
|
|
|
|
|
|
для: Лена
(29.06.2010 в 20:27)
| | каким запросом пробовали менять? | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2010 в 21:03)
| | UPDATE city SET city = 'Öhningen' WHERE id=893
Вместо Ö - буква О с двумя точками наверху. | |
|
|
|
|
|
|
|
для: Лена
(29.06.2010 в 22:29)
| | Если Вы выполняли запрос через какую-то web-форму, то кодировка этой страницы должна быть в UTF-8. Т.е. если это phpMyAdmin, то проверьте в какой кодировке страницы. | |
|
|
|
|
|
|
|
для: Тень&
(29.06.2010 в 22:47)
| | Я через phpMyAdmin делала, все страницы в нем в cp1251. Можно сделать форму в utf и передать через нее значение - название города, которое потом обновить. | |
|
|
|
|
|
|
|
для: Лена
(29.06.2010 в 22:56)
| | >Я через phpMyAdmin делала, все страницы в нем в cp1251.
Это что-то новенькое.
В phpMyAdmin можно выбрать ту клиентскую кодировку, которая нравится.
>Можно сделать форму в utf и передать через нее значение - название города, которое потом обновить.
Но я то имел в виду несколько иное.
Запрос с REPLACE(), заменяющий эквиваленты на символы. | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2010 в 23:17)
| | >>Я через phpMyAdmin делала, все страницы в нем в cp1251.
>
>Это что-то новенькое.
>В phpMyAdmin можно выбрать ту клиентскую кодировку, которая нравится.
Это где такое?
>>Можно сделать форму в utf и передать через нее значение - название города, которое потом обновить.
>
>Но я то имел в виду несколько иное.
>Запрос с REPLACE(), заменяющий эквиваленты на символы.
Делаю в ПМА запрос - REPLACE INTO city(id,city) VALUES (893,'Öhningen'), идет буква О, после выполнения запроса умляут как был, так и остался, и запрос выглядит так, как здесь.
Делала через форму, результат - ?hningen, ? вместо О. | |
|
|
|
|
 21.9 Кб |
|
|
для: Лена
(29.06.2010 в 23:53)
| | >>В phpMyAdmin можно выбрать ту клиентскую кодировку, которая нравится.
>Это где такое?
см картинко | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 00:02)
| | Я все выставила, не помогло.
У меня MySQL-кодировка: Windows Cyrillic (cp1251)
А у вас - utf, как ее поменять? | |
|
|
|
|
|
|
|
для: Лена
(30.06.2010 в 00:09)
| | Какая версия phpMyAdmin? | |
|
|
|
|
|
|
|
для: Тень&
(30.06.2010 в 00:18)
| | 2.6.1
На сервере только что попробовала, там utf, запрос REPLACE прошел удачно. | |
|
|
|
|
|
|
|
для: Лена
(30.06.2010 в 00:21)
| | за 2.6.1 не скажу ничего.
Это какая-то дюже старая версия.. | |
|
|
|
|
|
|
|
для: Лена
(30.06.2010 в 00:09)
| | а кодировка БД какая?
а кодировка таблицы?
а кодировка поля? | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 00:22)
| | Везде utf.
У меня теперь на страницу эти буквы, которые теперь в базе отображаются, не выводятся - например - http://prozed.com/reg/reg1.php?idC=1&id=203&letter=O
Кодировка скрипта - utf. | |
|
|
|
|
|
|
|
для: Лена
(30.06.2010 в 00:41)
| | А в самом скрипте прописано
<?php
mysql_set_charset('utf8');
|
или, что почти аналогично,
<?php
mysql_query('SET NAMES utf8');
|
? | |
|
|
|
|
|
|
|
для: Тень&
(30.06.2010 в 00:47)
| | Забыла проверить. Виновата.
Движок же не мой. Поставила, спасибо.
А вот еще вопрос. Почему у меня на локалхосте, когда для city делаю SHOW VARIABLES LIKE 'char%' выдает:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir \usr\local\mysql5\share\charsets\
Почему character_set_server cp1251, если везде должно быть utf? | |
|
|
|
|
|
|
|
для: Лена
(30.06.2010 в 00:53)
| | >Почему character_set_server cp1251, если везде должно быть utf?
нельзя ли привести выдержку из мануала, подтверждающую этот тезис?
PS. к слову, у меня тоже cp1251
PPS. Хоть это и не айс. | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 00:59)
| | >нельзя ли привести выдержку из мануала, подтверждающую этот тезис?
:) значит, неправильно.
Завтра почитаю, отпишусь.
Посмотрела на сервере - latin1 стоит. | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 00:59)
| | >нельзя ли привести выдержку из мануала, подтверждающую этот тезис?
Почитала. Нет там такого.
Получается, эта установка влияет только, если мы создаем базу данных и явно не указываем, в какой кодировке ее создать: CREATE DATABASE `MyDB`; - она создается тогда в кодировке сервера.
Если уж сильно хочется поменять character_set_server на нужную кодировку, то можно:
SET SESSION character_set_server = utf8;
Т.е. если
SET SESSION character_set_server = utf8;
CREATE DATABASE `MyDB`;
база будет создана в utf8 независимо от того, какая текущая кодировка сервера. | |
|
|
|
|
 20.7 Кб |
|
|
для: Лена
(29.06.2010 в 23:53)
| | >>Но я то имел в виду несколько иное.
>>Запрос с REPLACE(), заменяющий эквиваленты на символы.
>
>Делаю в ПМА запрос - REPLACE INTO city(id,city) VALUES (893,'Öhningen'), идет буква О, после выполнения запроса умляут как был, так и остался, и запрос выглядит так, как здесь.
>
>Делала через форму, результат - ?hningen, ? вместо О.
см еще картинко
я намекал на запрос вида: UPDATE city SET name = REPLACE(name, ..., ...) | |
|
|
|