SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.03.2013 17:47:50

vadval15
Участник
Зарегистрирован: 13.03.2013
Сообщений: 2

Проблема с кодировкой в СУБД MySQL 5.1

Почему при установке кодировки utf8 (в дополнение к указанию её в базах данных) в конфигурационном файле my.cnf MySQL 5.1 ОС ALT Linux следующей директивой:
     default-character-set=utf8
клиентские кодировки latin1 заменяются на utf8, но в консоли по запросам mysql кириллица преобразуется (в основном) в вопросительные знаки, в то время как при просмотре в браузере остаётся неизменной? Ведь данную директиву, наоборот, советуют вводить для избавления от этих знаков!

Неактивен

 

#2 09.04.2013 14:39:27

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Проблема с кодировкой в СУБД MySQL 5.1

Попробуйте установить кодировку соединения:
SET NAMES utf8;


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#3 09.01.2014 01:25:24

kisslii
Участник
Зарегистрирован: 09.01.2014
Сообщений: 3

Re: Проблема с кодировкой в СУБД MySQL 5.1

Подскажите пожалуйста, у меня похожие проблемы с сопоставлением таблиц latin1 и cp1251,
решение на форуме так и не нашел, вопрос такой,
как мне, пользуясь phpMyAdmin (Денвер2 и 3) на разных версиях mySQL, загрузить старый дамп в нужной кодировке на новом сервере 5.0 (сохраняю его в utf8 и cp1251, кодировка сравнения таблиц по умолчанию cp1251)  таблицы на новом сервере создаются такие:
character_set_database  latin1
character_set_server   latin1
collation_database     latin1_swedish_ci

почитал статью http://sqlinfo.ru/articles/info/5.html

добавляю строки в дамп

SET NAMES utf8;
SET character_set_server=cp1251;
далее дамп БД;
получается тоже самое, общая кодировка сопоставления остается latin1_swedish_ci, а нужна cp1251.

подскажите пожалуйста что не так делаю.

Неактивен

 

#4 09.01.2014 11:50:32

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проблема с кодировкой в СУБД MySQL 5.1

Старый дамп - это из какой версии?

Приведите кусок из дампа м create table и insert

Неактивен

 

#5 09.01.2014 14:31:33

kisslii
Участник
Зарегистрирован: 09.01.2014
Сообщений: 3

Re: Проблема с кодировкой в СУБД MySQL 5.1

Вопрос решился (вот хорошая статься) (версия дампа -- phpMyAdmin SQL Dump -- version 2.6.1)

Сделал так, при помощи phpMyAdmin создаем дамп в кодировке таблиц (или колонок) по умолчанию latin1 (а данные в таблицах DEFAULT CHARSET=cp1251), затем открываем наш дамп при помощи текстового редактора (у меня EditPlus) конвертируем в utf8 (после конвертации руские буквы не читаются), затем идем на наш хостинг создаем БД (без таблиц), выбираем Опции (или Операции) в менюшке phpMyAdmin, там ставим кодировку сопоставления нашей БД (utf8 вместо latin1), далее загружаем дамп на сервер к кодировке файла utf8 , получаем БД в кодировке таблиц utf8 а сами записи в таблицах (внутри phpMyAdmin в cp1251), а при соединении с БД в строке соединения указываем кодировку cp1251.

Отредактированно kisslii (09.01.2014 14:32:27)

Неактивен

 

#6 09.01.2014 14:49:04

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проблема с кодировкой в СУБД MySQL 5.1

Ну, судя по тому, что вы сделали неправильно, статья не очень хорошая smile

Неактивен

 

#7 09.01.2014 15:09:49

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Проблема с кодировкой в СУБД MySQL 5.1

vasya, почему вывод о неправильности? Вроде бы описан первый вариант из статьи по ссылке - он вполне корректный. Исправляется дамп так, чтобы он был в utf8 и в нем была указана кодировка utf8. При подключении SET NAMES cp1251 и данные для сайта будут в cp1251

Неактивен

 

#8 09.01.2014 15:18:42

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проблема с кодировкой в СУБД MySQL 5.1

Я вот про это

kisslii написал:

получаем БД в кодировке таблиц utf8 а сами записи в таблицах (внутри phpMyAdmin в cp1251), а при соединении с БД в строке соединения указываем кодировку cp1251.

Но тут действительно скорее дело в том, что пишу одно, делаю другое, но делаю правильно.

Неактивен

 

#9 10.01.2014 12:35:57

kisslii
Участник
Зарегистрирован: 09.01.2014
Сообщений: 3

Re: Проблема с кодировкой в СУБД MySQL 5.1

Да изложено не совсем точно smile  тогда если у меня таблицы в базе в UTF8, то почему я через phpMyAdmin вижу русский текст, это потому что данные в таблицах DEFAULT CHARSET=cp1251 или это зависит от типа соединения с phpMyAdmin с MySQL?

Неактивен

 

#10 10.01.2014 12:48:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проблема с кодировкой в СУБД MySQL 5.1

Сервер на лету преобразует данные в нужную вам кодировку.
Например, ваша программа говорит set names cp1251; это значит, что она будет передавать данные в cp1251 и получать от сервера их желает в этой же кодировке. Если данные хранятся правильно, то их преобразование пройдет без ошибок. (см раздел "проблема на пальцах" из статьи)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson