Проблем с кодировка в сайт с база данни

alexer

Active Member
Здравейте,
някой може ли да помогне малко с насоки за кодировката.
Символите "И" и "ш" се изобразяват, като �?.
Гледах кодировки на базата, на файловете (зададената в тях), но не успях да го коригирам.
Възможно ли е проблемът да е в Windows-ът ми и неговата ANSI или нещо подобно.
Става въпрос за линк директорията urlbg.com

Благодаря!
 
От: Проблем с кодировка в сайт с база данни

Здравейте,
някой може ли да помогне малко с насоки за кодировката.
Символите "И" и "ш" се изобразяват, като �?.
Гледах кодировки на базата, на файловете (зададената в тях), но не успях да го коригирам.
Възможно ли е проблемът да е в Windows-ът ми и неговата ANSI или нещо подобно.
Става въпрос за линк директорията urlbg.com

Благодаря!

Вкарай mysql_query("set names 'utf8'"); във файловете, където има връзка с базата (mysql_connect). Hope that helps.
 
Последно редактирано:
От: Проблем с кодировка в сайт с база данни

Благодаря за отговорите!
@strana би ли дал малко подробности, тъй като ми куцат бази данни и php.
Мерси предварително!
 
От: Проблем с кодировка в сайт с база данни

Обикновено, това е най-често срещаното решение на този проблем, откакто се сблъскаха кирилицата, utf-8 и sql, затова предполагам, че шансът да ти свърши работа е 99%, още повече че видях, че си с php link directory - ползвал съм по-стари версии на този скрипт. Доста пояснения по въпроса има писани, и като цяло се свеждат до това да намериш php-файловете, които съдържат в кода "mysql_connect" и да добавиш след него този ред:
Код:
mysql_query("set names 'utf8'");

Ако срещнеш трудности, можеш да качиш тези файлове тук, за да се направят съответните промени.
Има вариант, разбира се, и проблемът да е в колацията на базата ти, но би забелязал, че не съответства, така че най-вероятно е горното.
 
От: От: Проблем с кодировка в сайт с база данни

Прегледах всичките .php, .htm и .tpl файлове ( около 400-500 са ) и само в 2 намерих "mysql_connect". В единият файл си беше сложено UTF8, а другият код изглежда така:

Код:
    function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
    {
        if (!empty($this->port)) $argHostname .= ":".$this->port;
        
        if (ADODB_PHPVER >= 0x4300)
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect,$this->clientFlags);
        else if (ADODB_PHPVER >= 0x4200) 
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect);
        else
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword);
    
        if ($this->_connectionID === false) return false;
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;    
    }

Възможно е нещо по базата данни да не го правя както трябва. Тези дни тествах много варианти, дори направих още една директория само за тестване и нови инсталации и какво ли не, но проблемът винаги е същият.
 
От: Проблем с кодировка в сайт с база данни

Трябваше само php-файловете да погледнеш.
Иначе, според мен това би трябвало да свърши работа:

Код:
        if (ADODB_PHPVER >= 0x4300)
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect,$this->clientFlags);
 mysql_query("SET NAMES 'utf8'");
        else if (ADODB_PHPVER >= 0x4200) 
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect);
 mysql_query("SET NAMES 'utf8'");
        else
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword);
 mysql_query("SET NAMES 'utf8'");
    
        if ($this->_connectionID === false) return false;
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;

но все пак би било добре, ако някой от форумните програмисти го потвърди или поправи.
 
Re: От: Проблем с кодировка в сайт с база данни

Трябва да се сложат скоби, иначе няма да работи. Ето така:
PHP:
if (ADODB_PHPVER >= 0x4300) {
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect,$this->clientFlags);
 mysql_query("SET NAMES 'utf8'");
}        else if (ADODB_PHPVER >= 0x4200) {
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect);
 mysql_query("SET NAMES 'utf8'");
}        else {
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword);
 mysql_query("SET NAMES 'utf8'");
}    
        if ($this->_connectionID === false) return false;
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;

EDIT:>> Даже е по-добре да стане така:
PHP:
        if (!empty($this->port)) $argHostname .= ":".$this->port;
        
        if (ADODB_PHPVER >= 0x4300)
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect,$this->clientFlags);
        else if (ADODB_PHPVER >= 0x4200) 
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
                                                $this->forceNewConnect);
        else
            $this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword);
    
        if ($this->_connectionID === false) return false;
 mysql_set_charset('utf8'); //препоръчва се ползването на тази функция, вместо SET NAMES
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;
 
От: Проблем с кодировка в сайт с база данни

Благодаря ви много за помощта!
Най-после успях да поправя нещата, жалко че започнах цялата директория на ново и въвеждах всички линкове и описания на ръка. :)

Стана по този начин и като създавах базата и зададох utf8_general_ci:

if (ADODB_PHPVER >= 0x4300) {
$this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
$this->forceNewConnect,$this->clientFlags);
mysql_query("SET NAMES 'utf8'");
} else if (ADODB_PHPVER >= 0x4200) {
$this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword,
$this->forceNewConnect);
mysql_query("SET NAMES 'utf8'");
} else {
$this->_connectionID = mysql_connect ($argHostname,$argUsername,$argPassword);
mysql_query("SET NAMES 'utf8'");
}
if ($this->_connectionID === false) return false;
if ($argDatabasename) return $this->SelectDB($argDatabasename);
return true;

@strana за пореден път ти бия репутация и си един от най-уважаваните от мен тук потребители. :)
@vbTK благодаря много и на теб и имаш репутация.
 

Горе