Видео ролики бесплатно онлайн

Смотреть 365 видео

Официальный сайт isprras 24/7/365

Смотреть видео бесплатно

WeLinux.ru

20.04.09 14:41pluton

Tips & tricksMySQL + UTF8

Всем привет!
В этом посте хочу описать, как установить кодировку UTF8 в MySQL.

После установки кодировка была latin1. Чтобы посмотреть это, запускаем клиент:
1
2
3
4
5
6
$ mysql
mysql> \s
...
Server characterset:    latin1
...
 

Естественно, нам это не подходит.
После поисков в интернете и мане оказалось, что нужно подправить /etc/mysql/my.conf так:
1. в секцию [mysqld] дописать:
1
2
3
4
5
6
7

default-character-set=utf8
character-set-server=utf8
character-set-client=utf8
init-connect='SET NAMES utf8'
skip-character-set-client-handshake
 

2. в секции [mysqldump] и [mysql] дописать:
default-character-set=utf8


Перезагружаем сервер:
1
2
3
4
$ sudo /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld                        [ OK ]
 * Starting MySQL database server mysqld                        [ OK ]
 * Checking for corrupt, not cleanly closed and upgrade needing tables.


Проверим, применились ли настройки:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

$ mysql
mysql> \s
...
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
...

mysql> 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     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
 


По выводу видно, что переменные установлены правильно. Для проверки создадим БД и таблицу, запишем и выведем данные:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

mysql> CREATE DATABASE test;
mysql> SHOW CREATE DATABASE test;
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
mysql> USE test;
Database changed
mysql> CREATE TABLE test(title VARCHAR(1000));
mysql> SHOW CREATE TABLE test;
| test  | CREATE TABLE `test` (
  `title` varchar(1000) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
mysql> INSERT INTO test VALUES('Русско-японская война (яп. 日露戦争 Нити-Ро сэнсо:, кит. трад. 日俄戰爭, упрощ. 日俄战争, пиньинь Rìézhànzhēng, палл. Жиэчжаньчжэн; 8 февраля 1904 — 27 июля 1905) — война между Россией и Японией за контроль над Маньчжурией и Кореей.');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM test;
Русско-японская война (яп. 日露戦争 Нити-Ро сэнсо:, кит. трад. 日俄戰爭, упрощ. 日俄战争, пиньинь Rìézhànzhēng, палл. Жиэчжаньчжэн; 8 февраля 190427 июля 1905) — война между Россией и Японией за контроль над Маньчжурией и Кореей.
 

Ура. Вывод работает, и везде стоит кодировка utf8. Ну, и напоследок проверим связь с php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

<?php
    header('Content-Type: text/html; Charset=utf-8');
    $conn = mysql_connect('localhost', 'j', '') or die('can\'t connect to db');
//     mysql_query('
SET NAMES utf8;');
    mysql_select_db('
test', $conn) or die('can\'t select db');
    $res = mysql_query('SELECT * FROM test;');
    if (!$res)
        die('invalid query: ' . mysql_error());
    $row = mysql_fetch_array($res, MYSQL_NUM);
    print $row[0];
    mysql_close($conn) or die('can\'t close connection');
?>

 

И тут тоже работает. Строку mysql_query('SET NAMES utf8;'); необходимо раскоментить, если в конфиге не прописана строка init-connect.
Вот и всё. Кстати, PostgreSQL удобнее -- в нём по умолчанию стоит utf8.

ps. Пишу этот пост и для себя, чтобы потом долго не вспоминать, что куда писать.
+6
xcr20.04.09 15:03# +1
Спасибо, полезно
Когда работал веб-девелопером, часто сталкивался с проблемами с кодировкой mysql. Как-то раз хотел найти решение, но я тогда еще слабо владел гуглингом )
zwey20.04.09 15:32# +1
Спасибо за хороший мануал. Какраз недавно с такой проблемой сталкивался...

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии Изменения
      Изменения
        Посты Комментарии Изменения
        Top блогов (все)
        Топ пользователей Топ блогов
        Топ пользователей Топ блогов
        Top пользователей (все)
        Топ пользователей Топ блогов
        welinux.ru
        Идея сайта exelens; Движок 0byte, разработчик nvbn; Дизайн - Astramak

        Смотреть видео онлайн

        Онлайн видео бесплатно


        Смотреть русское с разговорами видео

        Online video HD

        Видео скачать на телефон

        Русские фильмы бесплатно

        Full HD video online

        Смотреть видео онлайн

        Смотреть HD видео бесплатно

        School смотреть онлайн