| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > русские символы в таблице |
| Автор: del3d 4.3.2008, 00:26 | ||||
| всех приветствую.. Значит создаю таблицу..
Добавляю данные..
Но во второй столбец реально умещается только 10 русских символов.. английских символов помещается 20.. Работаю с клиентом командной строки mysql под Linux'ом.. Как же быть? |
| Автор: mishaSL 4.3.2008, 21:29 |
| Это происходит т.к. каждый русский символ в utf-8 занимает 2 байта. |
| Автор: del3d 4.3.2008, 23:18 |
| А можно, как-нибудь работать с английскими и русскими символами одинаково? Пусть даже и английских символов помещается 10, но зато одинаково с русскими.. в вообще, как люди то делают, специально резервируют в два раза больше символов под русский алфавит? ..типа varchar(40)? |
| Автор: smartov 5.3.2008, 00:04 |
| Можно использовать http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html unicode-кодировку (ucs2) там все символы по 2 байта занимают (сохранение английских символов как одного байта это фича utf-8). Или можно делать, как считается, неправильно, и использовать http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html. Например CP1251. Что, в принципе, не так страшно как его малюют и может быть вполне оправдано в каких-то случаях. Например, возможно, в твоем. Хотя я на твоем месте просто увеличил бы размер полей varchar до 255 символов. Все равно "пустые" символы места занимать не будут. Чего ж экономить. |
| Автор: del3d 6.3.2008, 00:32 |
| Спасибо за совет.. |
| Автор: smartov 6.3.2008, 13:43 |
| Fally, нет. Совет из серии "как бы сделал я" и из серии "кто чем жертвует". Делать join по varchar это довольно редкая и странная операция. Более того время всегда тратится на все. И приведение 60 символов к 255 - не самое страшное. А вот вы, собственно, что автору посоветовали? Вы пришли, поумничали по поводу моего поста, а путного автору не сказали ничего. ТАких критоков мы видели уже много раз. |
| Автор: Fally 6.3.2008, 13:48 |
| На месте топик стартера я бы в первую очередь задался вопросом "А действительно ли мне нужен Юникод?" Очень часто ответ отрицательный. Тут исходя из задачи. |
| Автор: Feldmarschall 8.3.2008, 15:00 | ||
| На месте всех отвечавших я бы задумался над вопросом "А действительно ли MySQL настолько тупо устроена, что не позоляет хранить указанное количество символов?". На своем собственном месте я бы провел простой тест,
и убедился, что ограниения для русского языка точно такие же, как и для любых других. Ну, и на месте автора я бы задался отладкой своих скриптов. И, только в том случае, если отладка покажет, что проблема действительно в базе - заняться настройкой сервера. |
| Автор: del3d 8.3.2008, 15:47 | ||||
ничего не изменило в поле опять не помещается 5 символов
А так как база данных будет создаваться в учебных целях на ПК с Linux (кодировка по умолчнию utf8), то исползование юникода, я думаю, оптимальный вариант.. |
| Автор: Feldmarschall 8.3.2008, 15:53 |
| Да при чем здесь set names! Я не про set names писал. А привел пример того, что прекрасно русские буквы помещаются. А тебе надо разбираться с настройками. Версия Mysql у тебя какая? Кодировка OC к кодировке данных в бд и на сайте никакого отношения не имеет. Но совет использовать однобайтную кодировку все равно неверный. Если есть кривизна с настройкой кодировки, то она вылезет и при однобайтной. А проблема именно в насройке кодировок. |
| Автор: del3d 8.3.2008, 16:01 | ||||||
и как можно настрить кодировку, чтобы все было как в приведенном выше примере? Добавлено через 8 минут и 4 секунды Кстати, делаю все то же самое в MySQL Query Browser - все ОК, русские символы понимаются и заполняют все 5 позиций (при varchar(5)). ..но присоединяюсь к этой базе через клиент mysql, русские символы вообще не понимаются, но их 5 штук..
при создании таблицы в Query Browser явно указывалась кодировка
странные вещи.. |
| Автор: Feldmarschall 8.3.2008, 16:20 |
А кодировку, в которой ты работаешь, кто будет выставлять? Получается, не utf8 у тебя в консоли по умолчанию! И set names надо делать. Только не от балды, а с той кодировкой, которая у тебя в консоли. А вскрипте - ту, которая будет на сайте. Сайт в какой будет кодировке? |
| Автор: del3d 8.3.2008, 16:39 | ||||
отлично!!!
а база учебная, не для сайта.. для нее максимум потом на Qt приложение напишется и теститься она будет в локальной сети из 13 одинаковых компов (о ОС openSUSE). Спасибо Feldmarschall и всем остальным за помощь.. Добавлено через 14 минут и 45 секунд Только вот все ровно напрягает деформация таблицы из-за русских букв
|
| Автор: smartov 8.3.2008, 18:24 | ||
Feldmarschall,
Всем отвечающим в первую очередь было влом проверять. p.s. В общем-то этот вопрос у меня появлялся, но как-то само собой подумалось - ведь автор то, наверное, ж проверил... Добавлено через 1 минуту и 29 секунд del3d, проблема решена? Если да - пометь тему как решенную |
| Автор: del3d 9.3.2008, 23:54 |
| да, да все ок.. еще раз спаибо, закрвыаю тему! |