Кодировка, кодировка

Обсуждение возникших проблем, предложений и ошибок dbForge для MySQL
Закрыто
azm
Сообщения: 6
Зарегистрирован: Пн 06 июл 2009 04:33

Кодировка, кодировка

Сообщение azm » Пн 06 июл 2009 04:52

1. После импорта файла .sql (кодировка UTF8) русские буквы отображаются как при просмотре в режиме MSDOS.
Галочка unicode выставлена.
Файл .sql сгенерирован MySQL, phpMyAdmin читает его корректно.
Что делать?

2. Как использовать при вводе данных значения для полей SET, ENUM?

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Пн 06 июл 2009 15:39

1. Попробуйте поставить в начало скрипта SET NAMES cp1251.
2. Для ввода данных SET и ENUM вводите значения, которые Вы указывали при создании колонки. К сожалению, в нашем редакторе данных пока нет возможности выбора этих значений.

azm
Сообщения: 6
Зарегистрирован: Пн 06 июл 2009 04:33

Сообщение azm » Вт 07 июл 2009 12:41

Нет, к сожалению это не сработало!
Вот что получается из выражения "Весёлая викторина":
"внеурочная".
.sql файл записан в utf8.

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Вт 07 июл 2009 13:55

Для прояснения ситуации ответьте, пожалуйста, на следующие вопросы:
1. Какой версией dbForge Studio for MySQL Вы пользуетесь? Назовите пожалуйста полную версию.
2. Как Вы выполняете файл .sql - в SQL документе, через Мастер импорта или через Мастер выполнения скриптов?
3. Корректно ли открывается Ваш файл, например, в Блокноте или другом редакторе? Т.е. убедитесь, что файл действительно в UTF-8 кодировке.
4. Какую кодировку имеет колонка, в которую Вы импортируете данные?

azm
Сообщения: 6
Зарегистрирован: Пн 06 июл 2009 04:33

Сообщение azm » Вт 07 июл 2009 22:44

1. 3.50.310.1 Русская версия (проверял версию 3.50.290.1 - тоже самое). ОС: XP, Vista.
2. Файл .sql - выполняется через Мастер импорта или как скрипт - результаты одинаковые.
3. Да, файл записан в utf8 (в частности, Блокнот это показывает). Формируется стандартными средствами MySQL.
4. Вся база имеет кодировку utf8, некорректно импортируются поля и вообще, любая информация в базе, имеющие русские буквы. Явная вставка в sql-файл директив SET NAMES utf8 или SET NAMES cp1251 ничего не меняет.

Если импорт сделан с помощью phpmyadmin или с помощью MySQL, то отображение в вашей системе и последующие изменения - правильные.
Если импорт сделан, используя экспортный файл вашей системы - то вроде бы всё правильно. Кстати, импорт файла (база из 27 таблиц), созданного MySQL, длится 25 сек, а созданного вашей системой - 30 сек! (При выполнении скрипта - 22 и 45 сек).

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Ср 08 июл 2009 09:57

К сожалению, у нас не получается воспроизвести данную проблему. Не могли бы Вы нам прислать дополнительную информацию:
  1. файл, с которым у Вас проблема - можно с данными только для одной таблицы
  2. DDL таблицы, для которой Вы вставляете данные
  3. значения следующих переменных Вашего сервера (посмотреть можно в нашем приложении в окне "Переменные сервера"):
    character_set_client
    character_set_connection
    character_set_database
    character_set_results
    character_set_server
    character_set_system
Будем благодарны Вам за помощь в воспроизведение проблемы.

azm
Сообщения: 6
Зарегистрирован: Пн 06 июл 2009 04:33

Сообщение azm » Ср 08 июл 2009 16:41

Да, конечно.

1. Dump
-- MySQL dump 10.13 Distrib 5.1.30, for Win32 (ia32)
--
-- Host: localhost Database: ec
-- ------------------------------------------------------
-- Server version 5.1.36-community

/*!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 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


--
-- Table structure for table `directions`
--

DROP TABLE IF EXISTS `directions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `directions` (
`directionid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`title` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT 'название',
`description` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'описание',
`lastupdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`directionid`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AVG_ROW_LENGTH=3276;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `directions`
--

LOCK TABLES `directions` WRITE;
/*!40000 ALTER TABLE `directions` DISABLE KEYS */;
INSERT INTO `directions` VALUES (101,'Художественно-эстетическая направленность','Включает с себя различные творческие объединения (пение, рисование, театр, различные области искусства).\r\nДеятельность направлена на развитие эстетического восприятия, творческих способностей детей и их самовыражение.','2009-01-17 21:17:53'),(102,'Культурологическая направленность','Работа объединений по данному направлению включает многогранное развитие личности, расширяет общий кругозор, способствует изучению различных традиции, народных ремёсел.','2009-01-17 21:17:53'),(103,'Научно-техническая направленность','Развивает навыки работы с материалами и инструментами, способствует развитию пространственного мышления.\r\nРабота в кружке \"Информационный портал Центра\" развивает логическое и алгоритмическое мышление, даёт знания по информационным технологиям в Интернете.','2009-01-17 21:18:22'),(104,'Физкультурно-спортивная направленность','Занятия в секциях и кружках способствуют сохранению и укреплению здоровья, развитию логического мышления, двигательных навыков, общей физической подготовки.','2009-01-17 21:18:22'),(105,'Туристско-краеведческая направленность','Работа по данному направлению простирается от изучения истории Москвы до поисковой деятельности в различных регионах страны.','2009-01-17 21:18:32');
/*!40000 ALTER TABLE `directions` ENABLE KEYS */;
UNLOCK TABLES;

2. DDL
-- Скрипт сгенерирован Devart dbForge Studio for MySQL, Версия 3.50.310.1
-- Дата: 08.07.2009 19:35:03
-- Версия сервера: 5.1.36-community
-- Версия клиента: 4.1

CREATE TABLE t.directions(
directionid INT (10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
title VARCHAR (200) NOT NULL COMMENT 'название',
description TEXT NOT NULL COMMENT 'описание',
lastupdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (directionid)
)
ENGINE = INNODB
AUTO_INCREMENT = 106
AVG_ROW_LENGTH = 3276
CHARACTER SET utf8
COLLATE utf8_unicode_ci;

3. Переменные сервера
character_set_client=utf8
character_set_connection=utf8
character_set_database=utf8
character_set_results=utf8
character_set_server=utf8
character_set_system=utf8
Все переменные collation_* = utf8_general_ci

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Чт 09 июл 2009 07:36

Мы проверили Ваши тестовые данные - у нас все в порядке.
Скорее всего дело в том, что Вы не указали при открытии файла в какой кодировке он сохранен. По умолчанию, кодировка определяется автоматически, если файл содержит необходимую информацию. В противном случае берется кодировка по умолчанию в системе.
Укажите, пожалуйста, кодировку UTF-8 в диалоге "Открыть файл" внизу в специальном поле "Кодировка".

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

azm
Сообщения: 6
Зарегистрирован: Пн 06 июл 2009 04:33

Сообщение azm » Чт 09 июл 2009 16:03

1. Не нашел диалог "Открыть файл" - а какой файл - который для импорта (его надо открыть предварительно? а потом что делать?).
Я попробовал открыть файл (созданный MySQL), указав вторую в списке кодировку (utf8) - результат тот же, хотя этот же файл правильно читается и блокнотом и другими блокнотными редакторами и правильно импортируется MySQL.

2. При дампе таблицы MySQL уже знает в какой кодировке и что записано и помещает данную информацию в дамп-файл, которая должна считываться при импорте. Как раз эта информация по какой-то причине и не определятся автоматически. Может быть есть еще что-то настроечное?

3. Я могу прислать сам файл, сгенерированный MySQL, а не Ctrl-C - Ctrl-V, тогда проверка будет более чистой.

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Пт 10 июл 2009 08:08

Дело в том, что в Вашем случае скорее всего файл не содержит преамбулы, которая собственно и дает возможность определить кодировку файла. В наших мастерах импорта и выполнения скрипта на данный момент не предусмотрено задание кодировки пользователем и все происходит в автоматическом режиме (определение кодировки по преамбуле, если не удается определить - открывается в кодировке по умолчанию).
Мы реализуем данную функциональность в новой версии dbForge Studio for MySQL v3.60, которая будет доступна в течение 2-3 недель.

Сейчас же у Вас есть способ решить Вашу задачу с помощью выполнения Вашего sql-файла в SQL документе. Для этого:
- откройте файл через диалог "Открыть файл" с указанием нужной кодировки
- нажмите кнопку выполнить скрипт на панеле инструментов SQL.

В данном случае у Вас все должно получиться. В принципе, мастер импорта делает практически тоже самое, только без документа.

В любом случае, мы будем Вам признательны, если Вы пришлете нам свой файл на адрес поддержки support (собака) devart.com.

azm
Сообщения: 6
Зарегистрирован: Пн 06 июл 2009 04:33

Сообщение azm » Вс 19 июл 2009 06:03

Извините за задержку с ответом. Дамп файл отослан по указанному адресу.

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Пн 20 июл 2009 10:16

Спасибо, мы получили Ваше письмо со скриптом. Дальнейшая переписка будет вестись через систему поддержки пользователей.

Закрыто