SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.11.2007 19:37:46

chessplayer
Завсегдатай
Зарегистрирован: 20.11.2007
Сообщений: 43

Ф-ция ASCII

После select ASCII('a'); имеем ответ 97. Это понятно. Но после select ASCII('й'); имеем ответ 63 со знаком вопроса. Это тоже понятно, т.к. код ‘й’ располагается не в пределах [0-127]. А как тогда получать коды символов, которые лежат в границах [128-255]?

Неактивен

 

#2 20.11.2007 20:51:42

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Ф-ция ASCII

У меня нормально работает. Для однобайтовых символов должно быть все в порядке, если у Вас правильно выставлена кодировка командой SET NAMES

Для UTF8 следует использовать ORD
mysql> select ord(russianname) from tags where id=26;
+------------------+
| ord(russianname) |
+------------------+
|            53409 |
+------------------+
1 row in set (0.00 sec)

Неактивен

 

#3 21.11.2007 21:17:16

chessplayer
Завсегдатай
Зарегистрирован: 20.11.2007
Сообщений: 43

Re: Ф-ция ASCII

Привет rgbeast! Спасибо. А ты попробуй набрать select ord(‘й’); и посмотри, что получится. Наверняка вернет неверный код этого символа.

Неактивен

 

#4 21.11.2007 21:25:03

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Ф-ция ASCII

Просто select ord('й') будет зависеть от того, в какой кодировке консоль. Вот правильный эксперимент:


mysql> set names koi8r;
Query OK, 0 rows affected (0.00 sec)

mysql> use test       
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table b (t varchar(10)) CHARSET=UTF8;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into b values ('й');
Query OK, 1 row affected (0.10 sec)

mysql> select ord(t) from b;
+--------+
| ord(t) |
+--------+
|  53433 |
+--------+
1 row in set (0.07 sec)

mysql> select ord('й');
+----------+
| ord('й') |
+----------+
|      202 |
+----------+
1 row in set (0.00 sec)

Неактивен

 

#5 21.11.2007 22:31:29

chessplayer
Завсегдатай
Зарегистрирован: 20.11.2007
Сообщений: 43

Re: Ф-ция ASCII

Набираю set names koi8r; ответ: не понимает переменную names.

Может быть то, что вы описали применимо только к MySQL 5.0?

У меня 4-я версия. Стоит ли переходить на версию повыше? Какие преимущества я получу?

Спасибо.

Неактивен

 

#6 21.11.2007 22:35:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Ф-ция ASCII

На 5.0 можно перейти, получите корректную поддержку кодировок, см. статью http://sqlinfo.ru/articles/info/5.html.

Кроме того, в 5.0 шире функционал - триггеры, процедуры, view.

Неактивен

 

#7 22.11.2007 01:51:29

chessplayer
Завсегдатай
Зарегистрирован: 20.11.2007
Сообщений: 43

Re: Ф-ция ASCII

Установил MySQL 5.0 Все здорово! Теперь вроде работает, слава Богу.

rgbeast! Выражаю огромную признательность.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson