Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка
 
 автор: Лена   (29.06.2010 в 20:16)   письмо автору
 
 

Есть база немецких городов.
Вывожу их на страницу запросом:
SELECT *
FROM `city`
ORDER BY `city`

Среди этих городов есть те, которые начинаются на умляуты:
Öhningen
Östringen
Überlingen
Это города с немецкими буквами, которые с двумя точками наверху :) (не знаю, как называются).
Проблема в том, что при сортировке по алфавиту выводятся сначала названия с & и уже потом все остальное. Как сделать так, чтобы вначале шли буквы по алфавиту, а после уже эти проблемные названия?

В базе на данный момент 6 тысяч городов, и сейчас ее еще дополняют.

  Ответить  
 
 автор: Trianon   (29.06.2010 в 20:20)   письмо автору
 
   для: Лена   (29.06.2010 в 20:16)
 

буквы с умляутами есть в разных кодировках, начиная latin1 и кончая utf8
их совсем необязательно так мерзко кодировать.
Понятно, что в windows-1251 их нет, и на этом форуме отобразить названия не получится.

  Ответить  
 
 автор: Лена   (29.06.2010 в 20:27)   письмо автору
 
   для: Trianon   (29.06.2010 в 20:20)
 

Таблицы базы я переводила из 1251 в utf8, поэтому кодировала это не я.
Я пробовала менять их на буквы в utf8 - не меняется.

  Ответить  
 
 автор: Trianon   (29.06.2010 в 21:03)   письмо автору
 
   для: Лена   (29.06.2010 в 20:27)
 

каким запросом пробовали менять?

  Ответить  
 
 автор: Лена   (29.06.2010 в 22:29)   письмо автору
 
   для: Trianon   (29.06.2010 в 21:03)
 

UPDATE city SET city = 'Öhningen' WHERE id=893

Вместо Ö - буква О с двумя точками наверху.

  Ответить  
 
 автор: Тень&   (29.06.2010 в 22:47)   письмо автору
 
   для: Лена   (29.06.2010 в 22:29)
 

Если Вы выполняли запрос через какую-то web-форму, то кодировка этой страницы должна быть в UTF-8. Т.е. если это phpMyAdmin, то проверьте в какой кодировке страницы.

  Ответить  
 
 автор: Лена   (29.06.2010 в 22:56)   письмо автору
 
   для: Тень&   (29.06.2010 в 22:47)
 

Я через phpMyAdmin делала, все страницы в нем в cp1251. Можно сделать форму в utf и передать через нее значение - название города, которое потом обновить.

  Ответить  
 
 автор: Trianon   (29.06.2010 в 23:17)   письмо автору
 
   для: Лена   (29.06.2010 в 22:56)
 

>Я через phpMyAdmin делала, все страницы в нем в cp1251.

Это что-то новенькое.
В phpMyAdmin можно выбрать ту клиентскую кодировку, которая нравится.

>Можно сделать форму в utf и передать через нее значение - название города, которое потом обновить.

Но я то имел в виду несколько иное.
Запрос с REPLACE(), заменяющий эквиваленты на символы.

  Ответить  
 
 автор: Лена   (29.06.2010 в 23:53)   письмо автору
 
   для: Trianon   (29.06.2010 в 23:17)
 

>>Я через phpMyAdmin делала, все страницы в нем в cp1251.
>
>Это что-то новенькое.
>В phpMyAdmin можно выбрать ту клиентскую кодировку, которая нравится.

Это где такое?

>>Можно сделать форму в utf и передать через нее значение - название города, которое потом обновить.
>
>Но я то имел в виду несколько иное.
>Запрос с REPLACE(), заменяющий эквиваленты на символы.

Делаю в ПМА запрос - REPLACE INTO city(id,city) VALUES (893,'Öhningen'), идет буква О, после выполнения запроса умляут как был, так и остался, и запрос выглядит так, как здесь.

Делала через форму, результат - ?hningen, ? вместо О.

  Ответить  
 
 автор: Trianon   (30.06.2010 в 00:02)   письмо автору
21.9 Кб
 
   для: Лена   (29.06.2010 в 23:53)
 

>>В phpMyAdmin можно выбрать ту клиентскую кодировку, которая нравится.
>Это где такое?
см картинко

  Ответить  
 
 автор: Лена   (30.06.2010 в 00:09)   письмо автору
 
   для: Trianon   (30.06.2010 в 00:02)
 

Я все выставила, не помогло.
У меня MySQL-кодировка: Windows Cyrillic (cp1251)
А у вас - utf, как ее поменять?

  Ответить  
 
 автор: Тень&   (30.06.2010 в 00:18)   письмо автору
 
   для: Лена   (30.06.2010 в 00:09)
 

Какая версия phpMyAdmin?

  Ответить  
 
 автор: Лена   (30.06.2010 в 00:21)   письмо автору
 
   для: Тень&   (30.06.2010 в 00:18)
 

2.6.1
На сервере только что попробовала, там utf, запрос REPLACE прошел удачно.

  Ответить  
 
 автор: Trianon   (30.06.2010 в 00:24)   письмо автору
 
   для: Лена   (30.06.2010 в 00:21)
 

за 2.6.1 не скажу ничего.
Это какая-то дюже старая версия..

  Ответить  
 
 автор: Trianon   (30.06.2010 в 00:22)   письмо автору
 
   для: Лена   (30.06.2010 в 00:09)
 

а кодировка БД какая?
а кодировка таблицы?
а кодировка поля?

  Ответить  
 
 автор: Лена   (30.06.2010 в 00:41)   письмо автору
 
   для: Trianon   (30.06.2010 в 00:22)
 

Везде utf.
У меня теперь на страницу эти буквы, которые теперь в базе отображаются, не выводятся - например - http://prozed.com/reg/reg1.php?idC=1&id=203&letter=O
Кодировка скрипта - utf.

  Ответить  
 
 автор: Тень&   (30.06.2010 в 00:47)   письмо автору
 
   для: Лена   (30.06.2010 в 00:41)
 

А в самом скрипте прописано
<?php
mysql_set_charset
('utf8');

или, что почти аналогично,
<?php
mysql_query
('SET NAMES utf8');

?

  Ответить  
 
 автор: Лена   (30.06.2010 в 00:53)   письмо автору
 
   для: Тень&   (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?

  Ответить  
 
 автор: Trianon   (30.06.2010 в 00:59)   письмо автору
 
   для: Лена   (30.06.2010 в 00:53)
 

>Почему character_set_server cp1251, если везде должно быть utf?

нельзя ли привести выдержку из мануала, подтверждающую этот тезис?

PS. к слову, у меня тоже cp1251
PPS. Хоть это и не айс.

  Ответить  
 
 автор: Лена   (30.06.2010 в 01:11)   письмо автору
 
   для: Trianon   (30.06.2010 в 00:59)
 

>нельзя ли привести выдержку из мануала, подтверждающую этот тезис?

:) значит, неправильно.
Завтра почитаю, отпишусь.
Посмотрела на сервере - latin1 стоит.

  Ответить  
 
 автор: Лена   (30.06.2010 в 13:58)   письмо автору
 
   для: 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 независимо от того, какая текущая кодировка сервера.

  Ответить  
 
 автор: Trianon   (30.06.2010 в 00:17)   письмо автору
20.7 Кб
 
   для: Лена   (29.06.2010 в 23:53)
 

>>Но я то имел в виду несколько иное.
>>Запрос с REPLACE(), заменяющий эквиваленты на символы.
>
>Делаю в ПМА запрос - REPLACE INTO city(id,city) VALUES (893,'&#214;hningen'), идет буква О, после выполнения запроса умляут как был, так и остался, и запрос выглядит так, как здесь.
>
>Делала через форму, результат - ?hningen, ? вместо О.

см еще картинко

я намекал на запрос вида: UPDATE city SET name = REPLACE(name, ..., ...)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования