находил в интернете еще такие же и тоже без решения...
У человека возникла такая проблема на Kohana - везде работает нормально, а у него буква "Р" (большая русская) после сохранения в mysql отображается "кракозяброй"
Как решить проблему?
---
попробовал на винде, действительно там такая бага получается

Спустя 43 минуты, 2 секунды (22.04.2011 - 21:15) ИНСИ написал(а):
phpdreamer добавь после подключения и выбора БД, следующую строку:
Если не поможет, то создай в корневой папке файл .htaccess и пропиши:
mysql_query('SET NAMES UTF8');
Если не поможет, то создай в корневой папке файл .htaccess и пропиши:
AddDefaultCharset UTF-8
Спустя 17 минут, 37 секунд (22.04.2011 - 21:32) phpdreamer написал(а):
Kohana сама делает SET NAMES:
modules/database/classes/kohana/database/mysql.php
от htaccess толку не будет, так как лично у меня IIS, а не apache
и если бы сервер не знал что нужно использовать UTF-8, то не отображалось бы нормально ничего, а не только буква "Р" взятая из бд
modules/database/classes/kohana/database/mysql.php
...
public function connect()
{
if ($this->_connection)
return;
if (Database_MySQL::$_set_names === NULL)
{
// Determine if we can use mysql_set_charset(), which is only
// available on PHP 5.2.3+ when compiled against MySQL 5.0+
Database_MySQL::$_set_names = ! function_exists('mysql_set_charset');
}
// Extract the connection parameters, adding required variabels
extract($this->_config['connection'] + array(
'database' => '',
'hostname' => '',
'port' => NULL,
'socket' => NULL,
'username' => '',
'password' => '',
'persistent' => FALSE,
));
// Prevent this information from showing up in traces
unset($this->_config['connection']['username'], $this->_config['connection']['password']);
try
{
if (empty($persistent))
{
// Create a connection and force it to be a new link
$this->_connection = mysql_connect($hostname, $username, $password, TRUE);
}
else
{
// Create a persistent connection
$this->_connection = mysql_pconnect($hostname, $username, $password);
}
}
catch (ErrorException $e)
{
// No connection exists
$this->_connection = NULL;
throw $e;
}
// \xFF is a better delimiter, but the PHP driver uses underscore
$this->_connection_id = sha1($hostname.'_'.$username.'_'.$password);
$this->_select_db($database);
if ( ! empty($this->_config['charset']))
{
// Set the character set
$this->set_charset($this->_config['charset']);
}
}
...
от htaccess толку не будет, так как лично у меня IIS, а не apache
и если бы сервер не знал что нужно использовать UTF-8, то не отображалось бы нормально ничего, а не только буква "Р" взятая из бд
Спустя 15 минут, 55 секунд (22.04.2011 - 21:48) ИНСИ написал(а):
phpdreamer тогда не знаю
Будем ждать людей, которые знают 


Спустя 19 часов, 14 минут, 38 секунд (23.04.2011 - 17:03) phpdreamer написал(а):
Нашел в чем причина! Бага проявляется на windows когда сочетание символов "Р " проходит через фильтр регулярного выражения (в моем случае preg_replace), который удаляет повторы разделительных символов:
Ошибка в том, что нужен модификатор u для корректной работы с юникодом в винде:
preg_replace('/(\s+)\s{1,}/u', ...
preg_replace('/(\s+)\s{1,}/', "\n", $request->response);
Ошибка в том, что нужен модификатор u для корректной работы с юникодом в винде:
preg_replace('/(\s+)\s{1,}/u', ...
_____________
http://phpdreamer.ru
http://blog.phpdreamer.ru
http://php5shop.com