[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите научить PHP понимать руский язык
Bizon4ik
пытаюсь заставить PHP понимать руский язык через фукцию header

Код файле index.php

<?php
require ('page_begin.php');
?>
<body>
<?php
header("Content-Type: text/html; charset=utf-8"); ?>
<p>
Учимся PHP</p> <br />
<?php

echo '<p>Hellow world</p>';
?>
</body>



Содержимое файле page_begin.php

<!DOCTYPE HTML>
<head>
<meta
charset="utf-8" />
<link
href="style.css" rel="stylesheet" type="text/css"/>
<title>
Yes</title>
</head>



В результате плучаю ошибку "Warning: Cannot modify header information - headers already sent by page_begin.php"

Подскажите как правильно исправить эту ошибку что бы PHP понимал руский.
Заранее спасибо.

Valick
у вас до строки header("Content-Type: text/html; charset=utf-8"); есть вывод в браузер, это либо кодировка utf-8 с BOM самого файла срипта
либо какие нибудь пробелы (или другие печатные / непечатные символы) до <?php и после ?> (в основном в подключаемых файлах есть перевод строки или пробел после ?> ну или перед <?php)

_____________
Стимулятор ~yoomoney - 41001303250491
Bizon4ik
Цитата (Valick @ 28.02.2013 - 20:39)
у вас до строки header("Content-Type: text/html; charset=utf-8"); есть вывод в браузер, это либо кодировка utf-8 с BOM самого файла срипта
либо какие нибудь пробелы (или другие печатные / непечатные символы) до <?php и после ?> (в основном в подключаемых файлах есть перевод строки или пробел после ?> ну или перед <?php)

честно говоря мне трудно понять что вы написали. Единствоенное что я понял так это про пробелы. Я проверил, негде пробелов нет.
Спасибо заваш ответ.
ZSH
Цитата
<?php
require ('page_begin.php');
?>
<body> - вот это и есть вывод в браузер
<?php header("Content-Type: text/html; charset=utf-8"); ?>
<p>Учимся PHP</p> <br />
<?php
echo '<p>Hellow world</p>';
?>
</body>
Valick
ZSH, "слона то я и не заметил" :)
Bizon4ik
<?php
header("Content-Type: text/html; charset=utf-8");
require ('page_begin.php');
?>
<body>
<
p>Учимся PHP</p> <br />
<?php
echo '<p>Hellow world</p>';
?>
</body>

каким редактором пользуетесь для написания кода?

_____________
Стимулятор ~yoomoney - 41001303250491
Bizon4ik
Valick

Пользуюсь PHPDesigne8 и Denwer

Я обязательно попробую верером ваш вариант, но насколько помню я пробывал так писать. Ошибки небыло, но и PHP так руского и непонял. Но я еще раз проверю.
Michael
Тут все что тебе может пригодиться.

_____________
There never was a struggle in the soul of a good man that was not hard
Dagot
Тут отпишу.

У меня тоже траблы с русским текстом.

В БД не инсертятся руские символы. Но если напрямую через SQL meneger, то в проге видно текст, а когда его выдергиваешь от туда, то получаются каракули.

БД у меня в utf8, на денвере стоит addDefaultCharset utf8, в .htaccess тоже utf8 в мета utf8 и вообще везде где можно, в чем проблема? Браузер говорит что страница в utf8 и весь текст который не с БД нормально отображает. Такая трабла во всех браузерах. Поэтому можно заключить что дела в БД... но где? в mysql_set_charset(); установил кодировку в utf тоже. Кто сталкивался с таким? кстате в 1251 тоже не выводит...

_____________
аська 615-817, стучите начинающие прогеры, будем вместе прорываться)
Игорь_Vasinsky
после коннекта

mysql_query("SET NAMES 'utf8'");


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Dagot
Спасибо, сейчас попробую.

К сожалению не помогло. Я так понял, эту функцию нужно вызывать между конектом и запросом?

Если не лень посмотрите мой класс, пожалуйста...

В коде вызываю метод simpleQuery(); туда я и вставил вашу функцию.

ps спойлер не нашел... куда спойлер дели?

class DataBase {

private $_result,
$_connectId,
$_cond;

public function __construct() {

$this->_connect();
$this->_selectDb();
$this->_charsetDb();
}

/**
*
*
@param string $query
*
@return bool
*/

public function simpleQuery($query){

mysql_query("SET NAMES 'utf8'");

return (bool)$this->_execute($query);
}

/**
*
*
@param string $query
*/

public function query($query) {

$this->_result = $this->_execute($query);

}

/**
* умные кавычки
*/

public static function quoteSmart($text) {

if(get_magic_quotes_gpc()) {
$text = stripcslashes($text);
}

if (is_numeric($text)) {
return $text;
}

return "'" . mysql_escape_string($text) . "'";

}

public function getRows() {
return $this->getRow();
}

public function getRow(){

$return = array();

if($this->_result && mysql_num_rows($this->_result) > 0){
while( $row = mysql_fetch_assoc($this->_result)){

$return[] = $row;

}
}


return $return;

}

private function _execute($query) {

$result = mysql_query($query, $this->_connectId) or trigger_error("Invalid query: ". mysql_error());

return $result;
}


private function _connect() {

$this->_connectId = mysql_connect(HOST, USER_NAME, USER_PASSWORD) or trigger_error("Invalid connect server DB");
}

private function _selectDb() {

$this->_cond = mysql_select_db(DB_NAME, $this->_connectId) or trigger_error("Invalid select DB");
}

private function _charsetDb() {

mysql_set_charset(CHARSET_DB, $this->_connectId);
}

public function getLastID() {

return mysql_insert_id($this->_connectId);
}


_____________
аська 615-817, стучите начинающие прогеры, будем вместе прорываться)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.