SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#51 21.04.2017 19:10:45

bbiko
Участник
Зарегистрирован: 20.04.2017
Сообщений: 7

Re: Проблема кодировки (вместо кириллицы ???)

это дамп локальки
работает и отображается нормально
phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Апр 21 2017 г., 00:35
-- Версия сервера: 5.5.25
-- Версия PHP: 5.3.13

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!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 */;

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

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

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

CREATE TABLE IF NOT EXISTS `kaidan_keldi` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `aty` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

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

INSERT INTO `kaidan_keldi` (`id`, `aty`) VALUES

Неактивен

 

#52 24.04.2017 09:22:22

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

Re: Проблема кодировки (вместо кириллицы ???)

bbiko написал:

пробовала не получается никак

что именно не получается, на каком конкретно этапе происходит сбой?
у вас есть рабочий дамп с локального сервера
загружаете через пхпадмин?
сделав запрос к базе через пхпадмин вы видите знаки вопроса или нет?

Неактивен

 

#53 18.11.2020 22:01:08

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

Re: Проблема кодировки (вместо кириллицы ???)

tinyblob на консоли и в программе отображаются верно!
varchar и char правильно отображаются только на консоли, а в программе как ???...?

На консоли:
mysql> show create table `box`;
+-------+----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                               |
+-------+----------------------------------------------------------------------------------------------------------------------------+
| box   | CREATE TABLE `box` (
  `name` varchar(64) NOT NULL,
  `name_blob` tinyblob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 |
+-------+----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from box limit 1;
+------------+-----------------+
| name       | name_blob       |
+------------+-----------------+
| Первый box | Первый blob box |
+------------+-----------------+
1 row in set (0.00 sec)

Результат в программе:
?????? box
Первый blob box

Текст программы:
void __fastcall TfT::FormCreate(TObject *Sender)
{
    u_long n;
    if ( !mysql_init(&mysql) ) {
        sprintf(gOut, "Нет памяти для инициализации MySQL");
        goto done;
    }
    if ( mysql_options(&mysql, MYSQL_OPT_COMPRESS, 0) ) {
        mysql_close(&mysql);
        sprintf(gOut, "Ошибка инициализации MySQL");
        goto done;
    }
    if ( !mysql_real_connect(&mysql,"localhost","msm","msm20","test",0,NULL,0) ) {
        mysql_close(&mysql);
        sprintf(gOut, "Нет соединения с MySQL: %d %s", mysql_errno(&mysql), mysql_error(&mysql));
        goto done;
    }

    n = sprintf(buf,"select * from box limit 1;");
    if ( mysql_real_query(&mysql, buf, n) ) {
        sprintf(gOut, "Ошибка: %d %s", mysql_errno(&mysql), mysql_error(&mysql));
        goto done;
    }
    sqlres = mysql_store_result(&mysql);
    if ( (row = mysql_fetch_row(sqlres)) != NULL ) {
        if ( row[0] ) ed1->Text = (AnsiString)row[0];
        if ( row[1] ) ed2->Text = (AnsiString)row[1];
    }
    if ( sqlres ) mysql_free_result(sqlres);

    return;

done:
    PostMessage(Application->Handle,WM_CLOSE,0,0);
}

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.23, for Win32 (x86)

Connection id:          12
Current database:       test
Current user:           msm@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.5.23 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    cp1251
Db     characterset:    cp1251
Client characterset:    cp1251
Conn.  characterset:    cp1251
TCP port:               3306
Uptime:                 12 hours 4 min 36 sec

Threads: 2  Questions: 150  Slow queries: 0  Opens: 58  Flush tables: 1  Open tables: 0  Queries per second avg: 0.003
--------------

Кто знает, в чём дело?

Неактивен

 

#54 18.11.2020 23:10:05

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Проблема кодировки (вместо кириллицы ???)

Тут вопрос к Borland C Builder'у (на нём же форму пишете?) - в какой кодировке он выводит.
Можете попробовать создать таблицу не с CHARSET=cp1251, а, допустим, charset=utf8

И посмотрите отладчиком - что приходит в row[0] в строке
if ( row[0] ) ed1->Text = (AnsiString)row[0];
, и во что превращает её преобразование к типу (AnsiString)

Возможно, Вам стоит после подключения к mysql выполнить запрос set names cp1251;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#55 19.11.2020 10:01:03

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

Re: Проблема кодировки (вместо кириллицы ???)

Спасибо!
Помогло "set names cp1251", что странно, ведь tinyblob отображалось верно, а только char/varchar глючило!
big_smile

Неактивен

 

Board footer

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