Vladson, Если ты это для меня написал - то я знаю о существовании этой функции, уже давно, но не могу использовать из-за более старой версии PHP на хостинге, которым пользуюсь. Переезжать, разумеется, тоже не хочу - много всего перетаскивать и просто нафиг надо - я вообще склонен рассуждать так: "работает - и ладно". Ну а то, что новичку посоветовал такой "устаревший" вариант указания кодировки как mysql_query('SET NAMES ...'); - ну да, можно было сказать про mysql_set_charset(); , просто во-первых - привычка, а во-вторых - вдруг у него тоже старая версия php - он тогда снова с вопросом придёт, типа вообще всё перестало работать после добавления этой функции А каких-то реальных причин, почему это важно, использовать именно mysql_set_charset() вместо mysql_query('SET NAMES ...') - я не вижу.
Тема старая, но к одна из первых в поиске по кракозябрам. Ситуация такая, я не программер, но жизнь как говорила заставляет вникать. На форуме IPB не отображается кирилическая буква "И", все остальное ОК. Все по настройкам utf8_general_ci - форум и база, все кажется ОК. Запрос SHOW VARIABLES LIKE character_set_client character_set_connection character_set_results Возвращает utf8 Саппорт с хостинга посоветовал добавить $INFO['sql_charset'] = 'utf8'; в конфиг форума, на пустом(Тестовом) форуме помогает, на живом же форуме приводит к "Критикал эрор" и форум не работает. Чувствую, что решение где-то рядом, но.... Да в рнрАдмине посты и темы сообщений записаны полностью кракозябрами. Форум ставил не я... Во время установки форума, разбора полетов параметры character_set_client character_set_connection character_set_results были cp1251. Сейчас все везде равно utf8, но в рнрМайАдмин кириллица кракозябрами, а на форуме все ОК, кроме одной заглавной буквы "И", может что посоветуете, что сделать, что все наладить и не потерять форум?
Проблема решена, не мной, но человеком, который ставил форум, была кодировка. Так что все решаемо! База не пострадала, все записи ОК.
Всем привет. Перепробовал все способы уже. Но все равно вместо русских буквы выводится это äâà òðè. Кодировка в бд - utf8, в конфиге апача прописал AddDefaultCharset utf8 (причем, изначально в httpd.conf не было этой строки вообще), в конфиге пхп добавил default-character-set= utf8, сама страница в utf8. Код страницы Код (PHP): <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf8" /> </head> <body> <?php // Соединяемся, выбираем базу данных header( 'Content-Type: text/html; charset=utf8' ); $link = mysql_connect('localhost', 'root', 'root') or die('Не удалось соединиться: ' . mysql_error()); echo 'Соединение успешно установлено'; mysql_query ("SET CHARACTER SET 'utf8'", $link); mysql_query ("set character_set_client='utf8'"); mysql_query ("set character_set_results='utf8'"); mysql_query ("set collation_connection='utf8_general_ci'"); mysql_query ("SET NAMES utf8"); mysql_select_db('test_php') or die('Не удалось выбрать базу данных'); // Выполняем SQL-запрос $query = 'SELECT * FROM clients'; $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); // Выводим результаты в html echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // Освобождаем память от результата mysql_free_result($result); // Закрываем соединение mysql_close($link); ?> </body> </html> Помогите плз, а то я уже не знаю, что еще делать. Спасибо PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
у вас однобайтная кодировка. вам надо подключаться в однобайтной кодировке а вы не думая пихаете везде где можно мультибайтную.
В общем проблема решена. Решение в том, что my.ini Надо было поставить кодировку сервера cp1251. И будет все ок. До этого пробовал latin1 и utf8. Только для меня не понятно. Почему надо ставить ему cp1251, когда работаю в utf8. Буду признателен за ответ.
это вы работаете с ютиэф8. а он хранит данные в сипи1251. видимо сервер на винде. используйте везде юникод и проблем не будет.
Спасибо! Всё исковырял – не получалось. Видимо не хватало этих строчек: Код (Text): mysql_query ("set character_set_client='utf8'"); mysql_query ("set character_set_results='utf8'"); Не знаю повлияло или нет, но в строке mysql_query("SET NAMES utf8") было в кавычках 'utf8'' кавычки убрал)
Добрый день, прочла всё, что было выше и, возможно, конечно, что-то пропустила, но всё равно не могли бы вы помочь с таким вот вопросом: у меня есть база и после некоторых манипуляций, а именно: Код (PHP): [mysqld]character-set-server = utf8 collation-server = utf8_general_ci skip-character-set-client-handshake init_connect='SET collation_connection = utf8_general_ci' init_connect='SET NAMES utf8' [client] default-character-set=utf8 [mysqldump] default-character-set=utf8 В файле настроек странички добавила $pdo_options=array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ); Сделала и такое на всякий... mysql>ALTER DATABASE database CHARACTER SET utf8 COLLATE utf8_general_ci; Теперь всё вроде норм: mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) но на страничке http://localhost/..... по прежнему DDD и тому подобное. Сделала дамп, в нём сменила кодировку и перезалила, теперь - вместо DDD стоит ØÃ’æ Как исправить на нормальный язык? И, да, у меня система Debian и решить проблему нужно именно терминальными средствами В файле настроек ini.php тоже стоит Код (PHP): $database_connection_charset = 'utf8'; $database_connection_method = 'SET NAMES'; $pdo_options=array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ); PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Нет. Это язык Мордора. Не нужно ему звучать здесь. Коль уж используешь mysqli, используй его правильно: mysqli_set_charset();
Когда начинал изучать, было что-то типа дома 5.3 php а в учебном классе 5.6, дома код пишу - кракозябры в БД летят, прихожу преподу показываю - код нормально работает. // посмотрел, так и осталось у меня там, и то и то )) PHP: mysqli_set_charset($link, "'utf-8'"); mysqli_query($link, "SET NAMES 'utf8'");
А смысл? Чтоб наверняка? В программировании это так не работает. Если что-то не срабатывает, нужно искать причину. Вот тебе две строчки. PHP: mysqli_set_charset($link,"'utf-8'"); // твое, не сработает mysqli_set_charset($link,"utf8"); // мое, сработает Найди отличия.
Потомушто строка. Ну я ж тогда учился, я все пробовал, чтоб заработало, и большими буквами, и маленькими, и с ковычками, и без, и с пробелом, и с дефисом... Самое сложное что было с кодировкой, это отправка письма с сайта и прием его на андроид, заголовок всегда приходил кракозябрами, причем только на телефон. Я даже вел некоторую переписку с разработчиками приложения, пытаясь понять в чем дело. Решение нашел только вот такое PHP: $subject = '=?utf-8?B?'.base64_encode('Оповещение от сайта .....').'?=';
А надо было всего-то зайти в документацию по функции и посмотреть, как правильно. --- Добавлено --- Юзай phpMailer или Swift. И проблем не будет.