26

Re: Знаки вопроса вместо русских символов.

Странно... обычная выборка с нормальной кодировкой отображается...
Но когда юзаю Propel то косяки... выходит он сам меняет что ли кодировку?

27

Re: Знаки вопроса вместо русских символов.

Feniksss
Чтобы узнать кодировку соединения с MySQL выполните запрос:

SHOW GLOBAL VARIABLES LIKE 'char%';

Текущую кодировку соединения можно увидеть убрав из запроса GLOBAL.

Конкретно про Propel ничего сказать не могу, не пользовался. Думаю возможность задания кодировки соединения с MySQL быть должна.

И еще один момент: не используйте root.

На этой странице есть пример файла runtime-conf.xml.
http://propel.phpdb.org/trac/wiki/Users … untimeConf

Обратите внимание на <setting id="charset">utf8</setting>. Судя по всему здесь выставляется кодировка соединения с MySQL.

ВКонтакте Facebook Twitter

28

Re: Знаки вопроса вместо русских символов.

Ура! )))
Да, совершенно верно, кодировка задаётся именно там, НО это только при генерации классов для работы с БД.
Если классы уже созданы, то в файле конфигурации к этим классам надо прописать что-то типа:
'settings' =>
          array(
          'charset' => array(
                    'value' =>'utf8',
                    ),
        ),
Вот... и всё работает! Спасибо большое Hanut!!! Респект и уважуха, как говорится. Кстати говоря я очень удивлён оперативностью и грамотностью ответов! Потому что эту проблему я отразил ещё на 2 программерских форумах, где на одном последовала тупость какая-то в ответ. На др. вообще ничего не сказали smile
wink

29

Re: Знаки вопроса вместо русских символов.

Всем добрый вечер!!!
Хочу попросить у Вас помощи, особенно у Hanut!
Читал проблему jeck111, у меня подобная проблема, но только я ламер если не хуже...
У меня нет сайта но я хочу его создать, вот купил диск с видеоуроками по php, дошел до темы БД, и возникла проблема:

создал в phpmyadmin простую базу данных, в ней создал простую таблицу, потом создал тренировочный фаил,
и попытался вывести данные из таблици, при открываний его через браузер выводися "?????"!

Что делать, пожалуйста помогите!!!

Заранне спасибо!!!

Отредактировано PiratXXX (2010-01-25 18:58:56)

30

Re: Знаки вопроса вместо русских символов.

PiratXXX
Если страницы вашего сайта в кодировке windows-1251, то обязательно проверьте, чтобы сравнения таблиц и БД было cp1251_general_ci. Так же необходимо установить кодировку соединения скриптов с MySQL, для чего после функции mysql_connect следует добавить строку:

mysql_query('SET NAMES cp1251');

ВКонтакте Facebook Twitter

31

Re: Знаки вопроса вместо русских символов.

Hanut пишет:

PiratXXX
Если страницы вашего сайта в кодировке windows-1251, то обязательно проверьте, чтобы сравнения таблиц и БД было cp1251_general_ci. Так же необходимо установить кодировку соединения скриптов с MySQL, для чего после функции mysql_connect следует добавить строку:

mysql_query('SET NAMES cp1251');

Спасибо, проблема почти решилась как бы сама собой, я толком и не понял может глюк какой был!
Вобщем я пересоздал ту таблицу, и теперь информация из БД (из этой таблици) вытягивается нормально(на русском),
но теперь возникла новая проблема!

Вот код страници (на всякий случай):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php

$db = mysql_connect("localhost","pirat","0126377");
mysql_query('SET NAMES cp1251');

mysql_select_db ("firstbd",$db);


$result = mysql_query("SELECT * FROM firma",$db);

$myrow = mysql_fetch_array($result);

echo $myrow["dol"];

do
{
echo "Сотрудник N - ".$myrow["id"]."<br>";
echo $myrow['name']."<br>";
echo $myrow['lastname']."<br>";
echo $myrow['dol']."<br>";
}
while ($myrow = mysql_fetch_array($result));


?>


</body>
</html>



И дело в том, что при открывании через браузер, вместо"Сотрудник N - "
выводится "Сотрудник N - "...

Еще несколько вопросов:
1. Где посмотреть и изменить кодировку страниц? (Я работаю через Adobe Dreamweaver CS3 ).
2. Где глянуть сравнение таблиц и БД и изменять? (Я работаю в Денвер 2)
Это, чтобу на следуйщий раз не возникало глупых вопросов...

Облазил эти две проги и не нашел где все это менять (я или слепой или ...)

Зараннее спасибо! Извени за глупые вопросы!!!

32

Re: Знаки вопроса вместо русских символов.

Этот метатег означает, что вы создаете страницу в кодировке utf-8.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Следовательно необходимо сменить сравнения таблиц на utf8_general_ci, а кодировку соединения с MySQL установить в utf8.
mysql_query('SET NAMES utf8');

1) Чтобы сменить кодировку страниц необходимо исправить метатег и сменить собственно кодировку страницы. Как это сделать в Dreamweaver я не знаю.

2) Откройте phpMyAdmin, выберите базу данных и перейдите на страницу операций, снизу будет выпадающий список для выбора изначального сравнения для вновь создаваемых таблиц данной БД. Для смены сравнения таблицы, выберите ее и перейдите на страницу операций, где в блоке "Параметры таблицы" смените сравнение.

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

ВКонтакте Facebook Twitter

33

Re: Знаки вопроса вместо русских символов.

Огромное спасибо, за помощь и понимание!!!!!!!!

Блин вот это фигня, до этого создавал php файлы и всю информацию выводил в браузере как надо,
а теперь как связался с БД, из нее выводит как надо(текст),

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

Ну, ладно еще раз спасибо!!!!

Буду разбиратся...

34

Re: Знаки вопроса вместо русских символов.

Кодировка базы в latin1_swedish_ci .При забивке контента на сайт вместо кирилицы отображаются ????????
При SQL запросе SHOW GLOBAL VARIABLES LIKE 'char%'; получаем:
Variable_name    Value
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/share/mysql/charsets/

При SQL запросе: mysql_query('SET NAMES cp1251'); или mysql_query('SET NAMES UTF8'); получаем :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query('SET NAMES utf8')' at line 1

Что можно сделать для отображения кириллицы на страницах сайта?

35

Re: Знаки вопроса вместо русских символов.

USAN
Установите сравнение таблиц в необходимую вам кодировку. Если страницы скрипта в windows-1251, nо таблицы должны быть в cp1251_general_ci.

Сравнение таблиц можно установить с помощью phpMyAdmin, на странице операций.

ВКонтакте Facebook Twitter

36

Re: Знаки вопроса вместо русских символов.

#1007 - Can't create database 'mctbm?4973763?72019'; database exists. После сравнения таблиц.

37

Re: Знаки вопроса вместо русских символов.

USAN пишет:

#1007 - Can't create database 'mctbm?4973763?72019'; database exists. После сравнения таблиц.

Я ничего не понял из этого сообщения.

ВКонтакте Facebook Twitter

38

Re: Знаки вопроса вместо русских символов.

Кодировка базы в latin1_swedish_ci .При забивке контента на сайт вместо кирилицы отображаются ????????
При SQL запросе SHOW GLOBAL VARIABLES LIKE 'char%'; получаем:
Variable_name    Value
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/share/mysql/charsets/
При SQL запросе: mysql_query('SET NAMES cp1251'); или mysql_query('SET NAMES UTF8'); получаем :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query('SET NAMES utf8')' at line 1



такая же беда......((((


Установите сравнение таблиц в необходимую вам кодировку. Если страницы скрипта в windows-1251, nо таблицы должны быть в cp1251_general_ci.
Сравнение таблиц можно установить с помощью phpMyAdmin, на странице операций.


Не помогло.......
даже еще когда после набора в админке и при сохранении-появляется сразу

39

Re: Знаки вопроса вместо русских символов.

При SQL запросе: mysql_query('SET NAMES cp1251'); или mysql_query('SET NAMES UTF8'); получаем :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query('SET NAMES utf8')' at line 1

mysql_query('SET NAMES UTF8');

Это в php скрипт прописывается - а не SQL запрос в PMA, SQL запрос выглядит просто SET NAMES UTF8.

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

Отредактировано DmitryV (2011-02-20 12:25:39)

Facebook Twitter

40

Re: Знаки вопроса вместо русских символов.

DmitryV пишет:

При SQL запросе: mysql_query('SET NAMES cp1251'); или mysql_query('SET NAMES UTF8'); получаем :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query('SET NAMES utf8')' at line 1

mysql_query('SET NAMES UTF8');

Это в php скрипт прописывается - а не SQL запрос в PMA, SQL запрос выглядит просто SET NAMES UTF8.

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


почему так то?------Кодировка базы в latin1_swedish_ci .При забивке контента на сайт вместо кирилицы отображаются ????????

и что нужно сделать,чтоб все исправить.....если можно поподробнее......пожалуйста......

41

Re: Знаки вопроса вместо русских символов.

Dmitriyddk пишет:

почему так то?------Кодировка базы в latin1_swedish_ci

Это из-за настроек MySQL сервера, если у вас нет доступа к конфигурационному файлу MySQL, то глобально данный параметр поменять нельзя, но можно добиться, чтобы все работало следующим образом:

1) Если кодировка сайта windows-1251, то кодировка базы данных и таблиц должна быть cp1251; сравнение должно быть cp1251_general_ci.
2) В файлах скрипта необходимо найти вхождение функции mysql_connect и сразу после нее добавить строку:

mysql_query('SET NAMES cp1251');

3) В корне хоста создать файл .htaccess и добавить в него строку:

PHP_VALUE default_charset windows-1251

Если данные в БД уже есть, то надо проверить в каком виде они там находятся. Смотреть данные и кодировку таблиц надо в phpMyAdmin.

ВКонтакте Facebook Twitter

42

Re: Знаки вопроса вместо русских символов.

Очень долго мучилась с отображением русских символов в java.
Ответ нашла здесь: http://hashcode.ru/questions/153328/jav … х-символов
Надеюсь это кому-то тоже поможет.

43

Re: Знаки вопроса вместо русских символов.

Здравствуйте. Тоже проблема с отображением ?????????? вместо имени.
Кодировка базы utf8_general_ci    
Вот пример php:

<?php
App::uses('UsersAppModel', 'Users.Model');
/**
 * Discussion Model
 *
 * @property Categories.Category $Categories.Category
 */
class User extends UsersAppModel {
    public $useTable = 'customer';

    function afterFind($results) {
        foreach ($results as $key => $val) {
            $results[$key]['User']['id'] = $val['User']['customer_id']; 
            unset($results[$key]['User']['customer_id']);
            $results[$key]['User']['group_id'] = $val['User']['customer_group_id']; 
            unset($results[$key]['User']['customer_group_id']);
            $results[$key]['User']['username'] = $val['User']['email'];
            $results[$key]['User']['type'] = 'user';
                }
        return $results;
    }
}

Строчку
            $results[$key]['User']['username'] = $val['User']['email'];
Заменил на
            $results[$key]['User']['username'] = $val['User']['firstname'];
В итоге получил ?????????? вместо русских букв
Есть идеи как поправить?

Заранее спасибо!

44

Re: Знаки вопроса вместо русских символов.

vinik пишет:

В итоге получил ?????????? вместо русских букв

Проверьте кодировку файла скрипта, возможно она сбилась. Замена переменной вряд ли могла что-то изменить в подключении к БД.

ВКонтакте Facebook Twitter

45

Re: Знаки вопроса вместо русских символов.

Hanut пишет:

Проверьте кодировку файла скрипта, возможно она сбилась. Замена переменной вряд ли могла что-то изменить в подключении к БД.

Всмысле сам php?

46

Re: Знаки вопроса вместо русских символов.

vinik пишет:

Всмысле сам php?

Кодировка файла скрипта. Сам .php файл. Если открыть в Notepad++, то в статусной строке можно увидеть UTF8 или ANSI.

ВКонтакте Facebook Twitter

47

Re: Знаки вопроса вместо русских символов.

Hanut пишет:

Кодировка файла скрипта. Сам .php файл. Если открыть в Notepad++, то в статусной строке можно увидеть UTF8 или ANSI.

Поменял кодировку на UTF8, было ANSI as UTF8, но теперь ошибка такого плана.

Warning (2): session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/site.ru/forum/app/Plugin/Users/Model/User.php:1) [APP/Plugin/Users/Controller/Component/MembersessionComponent.php, line 14]

В файле MembersessionComponent.php в 14 строке находится

            session_start();

Пробовал этот файл тоже перекодировать, но ничего не изменилось.

Добавил в MembersessionComponent.php строчку <?ob_start();?> ошибка пропала, но русские буквы не видны. Так же ???????
sad

Отредактировано vinik (2012-11-17 08:10:00)

48

Re: Знаки вопроса вместо русских символов.

vinik пишет:

было ANSI as UTF8

Это правильно. Теперь верните кодировку перекодировав в UTF8 без бом байта. Это уберет проблему с сессиями.

По вопросикам давайте разбираться с самого начала. В phpMyAdmin видна кириллица? Вы ее можете прочитать?

ВКонтакте Facebook Twitter

49

Re: Знаки вопроса вместо русских символов.

Hanut пишет:

По вопросикам давайте разбираться с самого начала. В phpMyAdmin видна кириллица? Вы ее можете прочитать?

Она видна  в  phpMyAdmin нормально.

50

Re: Знаки вопроса вместо русских символов.

vinik пишет:

Она видна  в  phpMyAdmin нормально.

В Мета теге HTML страницы указана кодировка utf-8?

ВКонтакте Facebook Twitter