Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Кодировка для работы с БД (https://javascript.ru/forum/server/30100-kodirovka-dlya-raboty-s-bd.html)

Severtain 24.07.2012 10:38

Кодировка для работы с БД
 
Есть jQuery запросы, которые через PHP из базы возвращают
необходимые значение!
Столкнулся с проблемой, что английские тексты и символы работают, а когда использую русский возвращает "null"
На самой БД русский текст заносится, обрабатывается и работает адекватно, в чем может быть проблема ?

devote 24.07.2012 10:53

используйте кодировку UTF-8 и не будет проблем

Severtain 24.07.2012 10:57

<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
это?

devote 24.07.2012 10:57

сервер тоже должен работать с кодировкой UTF-8 и БД

Severtain 24.07.2012 11:02

Окей ! И как мне понять, какая кодировка стоит на БД и как ее переставить?
Хостинг и Домен на ukraine.com.ua

Маэстро 24.07.2012 18:41

Цитата:

Сообщение от Severtain (Сообщение 191165)
И как мне понять, какая кодировка стоит на БД?

В программе управления базой myadmin (phpMyAdmin) есть страница, показывающая параметры кодировки Вашего MySQL.
Там на странице MySQL (в самом корне всех страниц) должно быть написано
Кодировка сервера: UTF-8 Unicode (utf8)
Сопоставление кодировки соединения с MySQL: utf8_general_ci

x-yuri 24.07.2012 19:14

либо

<?php

mysql_connect('localhost', USER, PASSWORD);
$r = mysql_query("SHOW VARIABLES LIKE 'character_set%'");
echo '<table>';
while ($row = mysql_fetch_row($r)) {
    echo '<tr>';
    foreach ($row as $value) {
        echo '<td>' . $value;
    }
}
echo '</table>';


character_set_client, character_set_connection и character_set_results должно быть utf8. Если не utf8, тогда надо после подключения выполнить запрос: SET NAMES 'utf8'

devote 24.07.2012 19:21

после подключения к базе
mysql_query( "set session character_set_client=utf8;" );
mysql_query( "set session character_set_database=utf8;" );
mysql_query( "set session character_set_connection=utf8;" );
mysql_query( "set session character_set_results=utf8;" );
mysql_query( "set session collation_connection=utf8_general_ci;" );

x-yuri 24.07.2012 20:35

character_set_database - character set текущей БД, если ее и можно изменить, смысла в этом нету

set session character_set_connection=utf8; подразумевает set session collation_connection=utf8_general_ci; потому что utf8_general_ci - collation по умолчанию для character set utf8

SET по умолчанию изменяет переменные сессии, поэтому модификатор SESSION не обязательно указывать

достаточно SET NAMES 'utf8'

devote 24.07.2012 20:37

Цитата:

Сообщение от x-yuri
достаточно SET NAMES 'utf8'

увы но не всегда.. Были у меня проблемы с этим при использовании простого SET NAMES 'utf8', от того и стал делать так как написал выше.. Хуже от этого не стало, зато стабильно на любых настройках и любых базах работает.


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