151

Re: Смена кодировки базы в phpMyAdmin

dr_leevsey сказал:

Опишите если можно решение.

Если в phpMyAdmin вы видите такие же крякозябы, как на сайте (на картинке) - значит необходима перекодировка данных в БД. Самое простое решение я уже описал, и выглядит оно так:

mysqldump -u root -ppassword --default-character-set=latin1 db_name table_name > /usr/dump.sql

После создания дампа mysqldump необходимо открыть его текстовым редактором и заменить кодировки всех таблиц на utf8, после чего импортировать дамп обычным образом, можно через phpMyAdmin. Только сохраните все текущие данные в БД, чтобы можно было вернуться к ним в случае проблем с перекодировкой.

Проверьте, чтобы все таблицы, которые вы перекодируете имели одинаковую кодировку. Обратите на это внимание, они не должны быть в разных кодировках, иначе их надо сохранять по отдельности.

152

Re: Смена кодировки базы в phpMyAdmin

Часть базы на латышском, часть на английском. Я обработал таким образом только русские таблицы. Если что латышский тоже отображается не корректно. Латинские буквы нормально, а те, что содержат специальные символы такими же козяблами как и русские.
    К тому же мне кажется, что этот способ я испробовал одним из первых. Попробовал ещё раз, ничего не выходит.
    Примечательно, что на xampp под windows xp всё отображается корректно (и русский и латышский). Может ли быть дело в настройках PHP или lighttpd?

153

Re: Смена кодировки базы в phpMyAdmin

dr_leevsey сказал:

Примечательно, что на xampp под windows xp всё отображается корректно

Если в БД крякозябы, то не важно что отображается на сайте, это данные нормальными не делает.

Разбейте таблицы по языкам и создайте разные дампы для каждого языка. Дампы либо целиком вышлите на hanut@php-myadmin.ru, либо частично. Попробую глянуть.

Уточните используемые на сайте кодировки, в какой кодировке сохранять данные.

154

Re: Смена кодировки базы в phpMyAdmin

здравствуйте. подскажет с кодировкой

имею такие парметры:

MySQL
Сервер: localhost via TCP/IP
Версия сервера: 5.5.11
Версия протокола: 10
Пользователь: root@localhost
MySQL-кодировка: UTF-8 Unicode (utf8)


Веб-сервер
Apache/2.2.17 (Win32) PHP/5.2.17
Версия MySQL-клиента: 5.0.51a
PHP расширение: mysqli

phpMyAdmin
Информация о версии: 3.3.10

show variables:

character_set_client utf8
character_set_connection cp1251
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8

файл my.ini:

[client]
port=3306
character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.5/share/charsets"
default-character-set=cp1251
[mysql]
default-character-set=cp1251
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306
character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.5/share/charsets"
init-connect="SET NAMES cp1251"
collation-server=cp1251_general_ci

вроде уже все прописал, но клиент почему-то на utf-8 и без опции skip-character-set-client-handshake
русские символы отображаются как ???

подскажите

155

Re: Смена кодировки базы в phpMyAdmin

Raz0r сказал:

но клиент почему-то на utf-8

Вы о каком клиенте говорите? phpMyAdmin всегда будет выводить данные в utf-8, поэтому в первом блоке ошибок нет.

Во втором блоке я не понял что это за переменные, глобальные или локальные; запрос должен иметь вид:

SHOW GLOBAL VARIABLES LIKE "char%";

В my.ini я ошибок не вижу.

156 (изменено: Raz0r, 2011-05-03 21:18:00)

Re: Смена кодировки базы в phpMyAdmin

Hanut сказал:
Raz0r сказал:

но клиент почему-то на utf-8

Вы о каком клиенте говорите? phpMyAdmin всегда будет выводить данные в utf-8, поэтому в первом блоке ошибок нет.

Во втором блоке я не понял что это за переменные, глобальные или локальные; запрос должен иметь вид:

SHOW GLOBAL VARIABLES LIKE "char%";

В my.ini я ошибок не вижу.

однако, если не указать опцию skip-character-set-client-handshake
то на странице русские символы представляются вопросами.

SHOW GLOBAL VARIABLES LIKE "char%":

character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_filesystem binary
character_set_results cp1251
character_set_server cp1251
character_set_system utf8

создал таблцу еще раз, сделал дамп и вот что:

-- phpMyAdmin SQL Dump
-- version 3.3.10
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Май 04 2011 г., 01:15
-- Версия сервера: 5.5.11
-- Версия PHP: 5.2.17

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `web_shop`
--

-- --------------------------------------------------------

--
-- Структура таблицы `orders`
--

CREATE TABLE IF NOT EXISTS `orders` (
  `o_num` int(10) NOT NULL,
  `g_num` int(10) NOT NULL,
  `g_quantity` int(10) NOT NULL,
  `o_address` text NOT NULL,
  `o_name` text NOT NULL,
  `o_account` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

--
-- Дамп данных таблицы `orders`
--

вот поэтому видимо и получаются ????, хотя в My.ini указано, что cp1251.... neutral
как это исправить?

157

Re: Смена кодировки базы в phpMyAdmin

Raz0r сказал:

однако, если не указать опцию skip-character-set-client-handshake
то на странице русские символы представляются вопросами.

На странице чего?

Raz0r сказал:

/*!40101 SET NAMES utf8 */;

Эта строка в дампе совершенно правильно прописана. Все дампы создаются в utf-8, по умолчанию.

Raz0r сказал:

SHOW GLOBAL VARIABLES LIKE "char%":

Запрос выводит совершенно правильные настройки для кодировки windows-1251.

158

Re: Смена кодировки базы в phpMyAdmin

Hanut сказал:

На странице чего?

моей странички, где я вывожу данные из таблицы.
даже указал в коде
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

все равно, если не указать skip-character-set-client-handshake, то выводит вопросы.  hmm

в какую строну еще копать? вроде все правильно, а не работает

159

Re: Смена кодировки базы в phpMyAdmin

Raz0r сказал:

моей странички, где я вывожу данные из таблицы

Теперь ясно. Думаю это настройки PHP. Попробуйте в корне хоста создать файл .htaccess и прописать в нем строку:

PHP_VALUE default_charset windows-1251

И обязательно проверьте кодировку файла скрипта, она должна быть ANSI. Проще всего это увидеть в Notepad++.

160

Re: Смена кодировки базы в phpMyAdmin

Hanut сказал:
Raz0r сказал:

моей странички, где я вывожу данные из таблицы

Теперь ясно. Думаю это настройки PHP. Попробуйте в корне хоста создать файл .htaccess и прописать в нем строку:

PHP_VALUE default_charset windows-1251

И обязательно проверьте кодировку файла скрипта, она должна быть ANSI. Проще всего это увидеть в Notepad++.

спасибо, попробую

а может в самом пхп.ini есть что исправить или htaccsses лучший вариант?

161

Re: Смена кодировки базы в phpMyAdmin

Raz0r сказал:

а может в самом пхп.ini есть что исправить или htaccsses лучший вариант?

Можно и в php.ini прописать строку, просто при использовании .htaccess не надо перезагружать Apache, что удобнее для проверки:

default_charset = "windows-1251"

162 (изменено: avidor, 2011-05-24 11:24:34)

Re: Смена кодировки базы в phpMyAdmin

глюки на сайте частично видит под 1251 частично под utf8 (сайт www.vipkraska.ru)

Variable_name     Value
character_set_client     cp1251
character_set_connection     cp1251
character_set_database     cp1251
character_set_filesystem     binary
character_set_results     cp1251
character_set_server     cp1251
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

MySQL

    * Сервер: Localhost via UNIX socket
    * Версия сервера: 5.1.54
    * Версия протокола: 10
    * Пользователь: vipkrask_nuke@localhost
    * MySQL-кодировка: UTF-8 Unicode (utf8)

phpMyAdmin

    * Информация о версии: 3.3.9

а на сайте ток верхнее норм пишет а ставишь вручную в браузере utf8 становится норм текст но верхнее и кнопки с руским текстом становятся значками. что посоветуете сделать как поправить? очень горит и нуждаюсь в помощи ибо нуб с этом деле. доступа к май.ини не имею.... да естественно надо чтоб ср1251 было автоматом в браузере (забыл написать)

163

Re: Смена кодировки базы в phpMyAdmin

avidor сказал:

надо чтоб ср1251 было автоматом в браузере

Обратите внимание на метатег устанавливающий кодировку страниц:
<meta http-equiv="Content-Type" content="text/html;>charset=windows-1251" />
Должно быть:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

В остальном у вас проблем нет на сайте.

164

Re: Смена кодировки базы в phpMyAdmin

Здраствуйте. У меня такая проблема с кодировкой: на страницах выставляю windows-1251, но я заметил, что данные которые хранятся в MySQL, отображаются кракозябликами. Кодировка MySQL стоит utf-8. Выходит на одной странице как бы 2 кодировки, что ли?? как мне это исправить, подскажите пожалуйста, уже длительное время застапорился на этой проблеме и не могу доделать свой сайт!

Вот скрин:
http://psychology-my-family.ru/tests/enc.jpg

Если есть возможность, проинструктируйте меня по skype: justice-kharkiv, или просто обьясните текстом)

165

Re: Смена кодировки базы в phpMyAdmin

Justice сказал:

на страницах выставляю windows-1251, но я заметил, что данные которые хранятся в MySQL, отображаются кракозябликами.

Не понятно как именно вы выставляете на страницах windows-1251.

По идее, для работы с windows-1251 кодировки должны совпадать следующим образом:
1) Файлы должны быть созданы в ANSI (не в UTF8). Проще всего это увидеть в статусной строке редактора Notepad++.
2) Мета тег кодировки должен содержать кодировку windows-1251.
3) В базе данных данные должны храниться в таблицах с кодировкой cp1251 и иметь сравнение cp1251_general_ci.
4) В скриптах должна быть прописана кодировка соединения с MySQL. В данном случае есть два варианта. Если это какой-то форум или движок, то он должен уметь работать в кодировке cp1251 и в нем должна быть возможность установки кодировки соединения с MySQL при конфигурации. Если это собственный скрипт, то необходимо после функции mysql_connect прописать строку:

mysql_query('SET NAMES cp1251');

5) В корне сервера создайте файл .htaccess со строкой:

PHP_VALUE default_charset windows-1251

166 (изменено: Justice, 2011-11-10 21:01:09)

Re: Смена кодировки базы в phpMyAdmin

Спасибо за оперативный ответ!

На страницах выставляю как прописано в п.2 через мета-тег, первый и второй шаг совпадают, а как реализовать третий если в phpmyadmin пишет MySQL-кодировка: UTF-8 Unicode (utf8) ?, в структуре таблицы пишет сравнение utf8_general_ci . в базе mysql содержатся разные таблицы, как во всех поменять кодировку через phpmyadmin? скрипт - CMS-движок.

При изменениях в .htaccess выдает Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request

167

Re: Смена кодировки базы в phpMyAdmin

Justice сказал:

в phpmyadmin пишет MySQL-кодировка: UTF-8 Unicode (utf8)

Это не важно.

Justice сказал:

в структуре таблицы пишет сравнение utf8_general_ci

Менять вручную сравнение нельзя, это может убить данные. Чтобы перевести данные в cp1251 необходима перекодировка. Это не очень простой процесс, поэтому для дальнейшего надо знать будете вы ее делать или нет. В CMS уже есть данные, которые необходимо сохранить, или это свежая установка?

Justice сказал:

При изменениях в .htaccess выдает Internal Server Error

Эту проблему я не могу объяснить. Попробуйте обратиться к хостеру.

168

Re: Смена кодировки базы в phpMyAdmin

В CMS уже есть данные, которые необходимо сохранить, или это свежая установка?

Да, это свежая установка и данных там быть не должно. Готов попробовать перекодировать. Подскажете как?

А может быть быстрее будет создать новую БД и переписать в настрйоках скрипта коду доступа к ней? только как создать БД сразу в -1251 ?

169

Re: Смена кодировки базы в phpMyAdmin

Justice сказал:

А может быть быстрее будет создать новую БД и переписать в настрйоках скрипта коду доступа к ней?

Думаю проще и правильнее будет все установить заново.

Создайте базу данных, выберите ее и перейдите на страницу "Операции", установите сравнение в "cp1251_general_ci". После этого все таблицы будут созданы с кодировкой cp1251. Но надо понимать, что таблицы будут созданы в cp1251 только если CMS позволяет использовать такую кодировку, а не работает только с одной utf8, например. Часто бывает, что скриптам надо задавать кодировку при их установке, при отсутствии такой настройки кодировка будет выставлена по умолчанию.

Если CMS не умеет работать с другими кодировками, или имеются сложности с ее переводом на cp1251, можно оставить кодировку utf8, это будет даже лучше, так как utf8 является многоязычной кодировкой и предпочтительно пользоваться именно ей.

170

Re: Смена кодировки базы в phpMyAdmin

ставлю ИПБ 3.2 на сервак 5.3 версии php и последней версии мускула.

сделал запрос SHOW GLOBAL VARIABLES LIKE 'char%';
[22:18:23] Юрий: выдало: character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/

в phpmyadmin пишет

Сервер: Localhost via UNIX socket
Версия сервера: 5.1.58
Версия протокола: 10
MySQL-кодировка: UTF-8 Unicode (utf8)

напротив каждой строки указано СРАВНЕНИЕ utf8_general_ci

прописывали
## Set charset server^M
AddDefaultCharset UTF-8^M

в .htaccess прописывали жестко указание ютф8, но тоже не помогло.

Ответ сервера (заголовок)
HTTP/1.1 200 OK Server: nginx/1.0.10 Date: Fri, 25 Nov 2011 11:47:11 GMT Content-Type: text/html;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.3.8 Set-Cookie: session_id=5d5da0a5cbddfaf4caa51af12e3eee6e; path=/; httponly Cache-Control: no-cache,must-revalidate, max-age=0 Expires: Thu, 24 Nov 2011 11:47:11 GMT Pragma: no-cache



после установки, если пишу на русском, то выдает кваброказябры в базе. Заливаю дамп в utf-8, на выходе на форуме отображаются как знаки вопроса.

чем лечить ума не приложу.

171

Re: Смена кодировки базы в phpMyAdmin

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

172

Re: Смена кодировки базы в phpMyAdmin

yury сказал:

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

Если надо быстро, то вышлите файл дампа на hanut@php-myadmin.ru, иначе открывайте новую тему и будем разбираться. Перекодировать данные бывает не просто.

Уточните кодировку в которую надо перевести данные.

173

Re: Смена кодировки базы в phpMyAdmin

Всем здравствуйте.
Прошу помощи.

Делал сайт на локальной машине (Apache+MySQL).
Все таблицы делал с кодировкой utf8.
Все русские символы отображались корректно.

Затем залил сайт на платный хостинг.
На этом хостинге уже была создана БД и был работающий сайт. На нем всегда русские символы отображались правильно.
Так вот новый залитый сайт использует ту же БД.
Создал новые таблицы в utf8.
И вроде бы на сайте всё отображается по-русски без кракозябров, но только есть одна страница, которая с помощью JavaScript вытаскивает данные из БД и вот эти данные вытаскиваются с помощью кракозябров.

Помогите. Всё что нужно показать или рассказать, я расскажу, покажу.

174

Re: Смена кодировки базы в phpMyAdmin

Pashkevich сказал:

JavaScript вытаскивает данные из БД и вот эти данные вытаскиваются с помощью кракозябров.

В скрипте, который работает с БД найдите как осуществляется соединение с MySQL, обычно это функция mysql_connect, сразу после этой функции добавьте строку:

mysql_query('SET NAMES utf8');

175

Re: Смена кодировки базы в phpMyAdmin

Такая строка у меня стоит:

<?php
  $dblocation = "mysql.itcitymg.mass.hc.ru";
  $dbname = "wwwitcitymgnru";
  $dbuser = "****";
  $dbpasswd = "****";

  $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
  if (!$dbcnx)
  {
    echo "<p>К сожалению, не доступен сервер mySQL</p>";
    exit();
  }
  mysql_query("SET NAMES UTF8");
  if (!mysql_select_db($dbname,$dbcnx) )
  {
    echo "<p>К сожалению, не доступна база данных</p>";
    exit();
  }
?>