![]() |
|
Модераторы: skyboy |
![]()
|
|
| del3d |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
всех приветствую..
Значит создаю таблицу..
Добавляю данные..
Но во второй столбец реально умещается только 10 русских символов.. английских символов помещается 20.. Работаю с клиентом командной строки mysql под Linux'ом.. Как же быть? |
||||
|
|||||
| mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 54 |
Это происходит т.к. каждый русский символ в utf-8 занимает 2 байта.
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
А можно, как-нибудь работать с английскими и русскими символами одинаково?
Пусть даже и английских символов помещается 10, но зато одинаково с русскими.. в вообще, как люди то делают, специально резервируют в два раза больше символов под русский алфавит? ..типа varchar(40)? |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
Можно использовать другую unicode-кодировку (ucs2) там все символы по 2 байта занимают (сохранение английских символов как одного байта это фича utf-8).
Или можно делать, как считается, неправильно, и использовать 8-битную кодировку. Например CP1251. Что, в принципе, не так страшно как его малюют и может быть вполне оправдано в каких-то случаях. Например, возможно, в твоем. Хотя я на твоем месте просто увеличил бы размер полей varchar до 255 символов. Все равно "пустые" символы места занимать не будут. Чего ж экономить. |
|||
|
||||
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
Спасибо за совет..
|
|||
|
||||
| Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Из серии вредные советы? ;) Место то они занимать и не будут, НО если будет запрос на соединение по данному полю и VARCHAR(60) /к примеру 60/, то MySQL будет приводить VARCHAR(60) к VARCHAR(255), так как VARCHAR(n) != VARCHAR(m), где m != n. А это лишнее время. |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
Fally, нет. Совет из серии "как бы сделал я" и из серии "кто чем жертвует". Делать join по varchar это довольно редкая и странная операция. Более того время всегда тратится на все. И приведение 60 символов к 255 - не самое страшное.
А вот вы, собственно, что автору посоветовали? Вы пришли, поумничали по поводу моего поста, а путного автору не сказали ничего. ТАких критоков мы видели уже много раз. Это сообщение отредактировал(а) smartov - 6.3.2008, 13:45 |
|||
|
||||
| Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
На месте топик стартера я бы в первую очередь задался вопросом "А действительно ли мне нужен Юникод?" Очень часто ответ отрицательный. Тут исходя из задачи.
|
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
На месте всех отвечавших я бы задумался над вопросом "А действительно ли MySQL настолько тупо устроена, что не позоляет хранить указанное количество символов?".
На своем собственном месте я бы провел простой тест,
и убедился, что ограниения для русского языка точно такие же, как и для любых других. Ну, и на месте автора я бы задался отладкой своих скриптов. И, только в том случае, если отладка покажет, что проблема действительно в базе - заняться настройкой сервера. |
|||
|
||||
| del3d |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
ничего не изменило в поле опять не помещается 5 символов
А так как база данных будет создаваться в учебных целях на ПК с Linux (кодировка по умолчнию utf8), то исползование юникода, я думаю, оптимальный вариант.. |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
Да при чем здесь set names!
Я не про set names писал. А привел пример того, что прекрасно русские буквы помещаются. А тебе надо разбираться с настройками. Версия Mysql у тебя какая? Кодировка OC к кодировке данных в бд и на сайте никакого отношения не имеет. Но совет использовать однобайтную кодировку все равно неверный. Если есть кривизна с настройкой кодировки, то она вылезет и при однобайтной. А проблема именно в насройке кодировок. |
|||
|
||||
| del3d |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
и как можно настрить кодировку, чтобы все было как в приведенном выше примере? Добавлено через 8 минут и 4 секунды Кстати, делаю все то же самое в MySQL Query Browser - все ОК, русские символы понимаются и заполняют все 5 позиций (при varchar(5)). ..но присоединяюсь к этой базе через клиент mysql, русские символы вообще не понимаются, но их 5 штук..
при создании таблицы в Query Browser явно указывалась кодировка
странные вещи.. |
||||||
|
|||||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
А кодировку, в которой ты работаешь, кто будет выставлять? Получается, не utf8 у тебя в консоли по умолчанию! И set names надо делать. Только не от балды, а с той кодировкой, которая у тебя в консоли. А вскрипте - ту, которая будет на сайте. Сайт в какой будет кодировке? |
|||
|
||||
| del3d |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
отлично!!!
а база учебная, не для сайта.. для нее максимум потом на Qt приложение напишется и теститься она будет в локальной сети из 13 одинаковых компов (о ОС openSUSE). Спасибо Feldmarschall и всем остальным за помощь.. Добавлено через 14 минут и 45 секунд Только вот все ровно напрягает деформация таблицы из-за русских букв
|
||||
|
|||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
Feldmarschall,
Всем отвечающим в первую очередь было влом проверять. p.s. В общем-то этот вопрос у меня появлялся, но как-то само собой подумалось - ведь автор то, наверное, ж проверил... Добавлено через 1 минуту и 29 секунд del3d, проблема решена? Если да - пометь тему как решенную |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |