powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Кодировочная магия от MySQL&PHP
9 сообщений из 9, страница 1 из 1
Кодировочная магия от MySQL&PHP
    #38344087
Svetlyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не могу никак вывести данные в правильной кодировке. Если использовать такй старый добрый метод:
Код: php
1.
2.
3.
4.
5.
    $q="select * from `content`";
    $res=mysql_query($q);
    while($tmp=mysql_fetch_array($res)) {
        echo $tmp['title'];
    }


то все выводится отлично
если сделать так:
Код: php
1.
2.
3.
4.
5.
6.
7.
    $tmp=GetContent('4', 'ByCatId');
    echo $tmp['title'];
то опять же все хорошо, однако если делать вот так(форичем):
    $tmp=GetContent('4', 'ByCatId');
    foreach($tmp as $val) {
        echo $val['title'];
    }


то все в кракозябрах, причем страница сразу распознается браузером как вин1251, хотя должна быть в утф
Сама функция ГетКонтент:

Сама функция GetContent:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function GetContent($property, $mode='ByAlias') {
    global $dbh;

    switch ($mode) {
        case 'ByAlias': {
        $sth=$dbh->prepare("SELECT * FROM `content` WHERE `alias`=?"); break;}
        case 'ById': {
        $sth=$dbh->prepare("SELECT * FROM `content` WHERE `id`=?"); break;}
        case 'ByCatId': {
        $sth=$dbh->prepare("SELECT * FROM `content` WHERE `cat_id`=?"); break;}};
    $sth->bindParam(1, $property);
    $sth->execute();
    $res=$sth->fetch(PDO::FETCH_ASSOC);
    return $res;
}

...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344226
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Svetlyiвсе в кракозябрах, причем страница сразу распознается браузером как вин1251, хотя должна быть в утфДык не понятно что не так - распознавание браузером кодировки страницы (хидер, мета) или распознает правильно, но отдаваемая пыхом в браузер кодировка не та?
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344404
Svetlyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<meta charset="utf-8"> вот мета
на всех остальных страницах все отлично, а после форича вся страница распознается почему-то вин1251, скорее всего какого текста больше в определенной кодировке, та и устанавливается браузером, но речь не о том. Не знаю в чем причина, сначала думал из бд достается неправильно, тогда почему вот так вот
Код: php
1.
 echo $tmp['title'];


все выводится хорошо
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344416
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Svetlyiскорее всего какого текста больше в определенной кодировке, та и устанавливается браузеромСтранный у Вас браузер, однако.
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344421
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Код: php
1.
 global $dbh;

А что происходит с $dbh до того как она импортируется внутрь функции? Мож там какая то инициализация соединения есть...
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344427
Svetlyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая вот штука
Код: php
1.
2.
3.
    $dbh=new PDO("mysql:host=".HOST.";dbname=".DBNAME, $dbuser, $dbpassword);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec('SET NAMES utf8');


не могу самое главное понять, почему
Код: php
1.
2.
    $tmp=GetContent('4', 'ByCatId');
    echo $tmp['title'];


работает хорошо, а вот так уже нет
Код: php
1.
2.
3.
4.
    $tmp=GetContent('4', 'ByCatId');
    foreach($tmp as $val) {
        echo $val['title'];
    }
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344562
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Svetlyi,

Так нельзя ни о чем судить. Где-то отваливается кодировка для байтов в массиве. Смысла нет это обсуждать как форич копирует или ссылается на объект, надо взять и все выстроить под юникод с самого начала.

В бд

CREATE DATABASE youdbname
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

все файлы (php, sql, css, html, js, etc...) в uft8 without bom

для файлов css, js, html предусмотрены метки, для css @charset "UTF-8"; для js указывается в линке в html, в котором самом полезно прописать

<!DOCTYPE html>
<html lang="ru" dir="ltr">
<head>
<meta charset="UTF-8">

линк на бд:

if (!$mysqli->set_charset("utf8")) {
die('Error loading character set utf8: (' . $mysqli->error() . ')');
}

запросы типа как у вас на объекте не отражаются - так написано в мануале на пхп, а в pdo чарсет как параметр линка фигурирует http://www.php.net/manual/en/mysqlinfo.concepts.charset.php

Наконец браузеру посылайте заголовок прежде чем кто-то его пошлет:

header('Content-Type: text/html; charset=UTF-8');

Наверно это все мероприятия. Ну, еще сервер - там я не очень шарю, но можно в htaccess прописать все необходимое если сервер упирается.

Зачем так всего много и почему нельзя локально разобраться с форичем? Можно - разберитесь, сделайте затычку и до следующего раза. Например зачем в Cssу все это?

Чтобы все было заранее сделано так, чтобы потом можно было сделать что угодно. Захотели в css прописать по-русски в content: "прювет" - и прописали и все работает сразу.
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344563
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, прошу занести в протокол. В фак, если, конечно, там еще нет.
...
Рейтинг: 0 / 0
Кодировочная магия от MySQL&PHP
    #38344568
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Для .htaccess - кодировка по умолчанию.

AddDefaultCharset UTF-8
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Кодировочная магия от MySQL&PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]