Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   UTF-8 b mySQL (https://javascript.ru/forum/server/8384-utf-8-b-mysql.html)

PeaceCoder 22.03.2010 21:08

UTF-8 b mySQL
 
Суть такая.
В Сервере, БД и таблицах ставлю кодировку UTF-8
Станица и файлы в uTF-8
При записи в БД кирилицы в uTF8 на выходе через phpMyAdmin в ячейках находятся крякозяблы. Но при считывании данных с БД и выдачи всайте все ок.

Помогает фича при коннекте к базе SET NAMES utf8 и крякозяблы пропадают. И отображается все по прежнему ок. Если данные опять же были занесены при этой команде. Старые при этойкоманде на выходе становятся крякозяблами как без нее в phpMyAdmin

Вопрос. Как избавится от этой команды? Что надо сделать с таблицами/базой/сервером, что бы в них хранилось корректный код UTF-8 символов, а не крякозяблы и не использовать эту команду?
Проблема. При экспортировании, если не устанавливать эту команду при занесении в базу, то выводятся крякозяблы...

PeaceCoder 22.03.2010 22:09

Решение найдено, но оно не применимо со стороны клиента =(
http://dev.mysql.com/doc/refman/5.1/...onnection.html
Цитата:

With the mysql client, if you want to use a character set different from the default, you could explicitly execute SET NAMES every time you start up. However, to accomplish the same result more easily, you can add the --default-character-set option setting to your mysql command line or in your option file. For example, the following option file setting changes the three connection-related character set variables set to koi8r each time you invoke mysql:

B@rmaley.e><e 22.03.2010 22:13

Смотреть настройки сервера мускуля.
Можно в init connect прописать SET NAMES utf8.

Без доступа к настройкам мускуля никак.

PeaceCoder 23.03.2010 00:38

Теперь вопрос в другом. В других базах такая же фигня? например в постадж или мсскл или оракл?

micscr 27.03.2010 08:13

Чтобы все корректно работало с кодировками в MySQL надо обязательно выставлять кодировку самого соединения:
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8" );
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'" );
т.е. надо учитывать:
- кодировку базы и таблиц
- кодировку соединения
- кодировку самих отправляемых/выводимых данных, т.е. в какой кодировке файл php.

PeaceCoder 27.03.2010 18:20

Это ясно уже. Вопрос в другом. В других типах баз такая же проблема? или это такая "фича" мускуля?

micscr 27.03.2010 19:16

Особо с другими базами в вебе не работал, но посмотрел сейчас как в друпале сделан тонкий клиент к postgreSQL:
function db_connect($url) {
    ... 
    $connection = @pg_connect($conn_string);
    ...
    pg_query($connection, "set client_encoding=\"UTF8\"");
}

т.е. походу тоже что-то подобное указывается.


Часовой пояс GMT +3, время: 00:26.