проблемы с кодировкой при печати текста из таблицы БД - PullRequest
1 голос
/ 07 октября 2011

У меня есть база данных, определенная с помощью charset utf8_general_ci, и таблица, в которой должен храниться текст, вставленный из формы текстовой области с той же кодировкой.

Форма, которую я использую для получения текста, такова:

<form action="submit_text.php" method="post">

    Text:</br>
    <textarea name="text" cols="109" rows="20">
        <?php echohtmlspecialchars($_POST['text']);?>
    </textarea>

    <input name="submit" type="submit" value="save text">

</form>

Инструкции php, которые я использую для сохранения этого текста в моей базе данных, следующие:

$text = $_POST['text'];
$query = "INSERT INTO table_name VALUES (..., '$text', ...)";
$query_result = mysql_query($query) or die (mysql_error());
return $query_result;

У меня есть страница, на которой я печатаю текст, сохраненный в таблице базы данных, выбрав один элементтаблицы и последующее отображение текстового поля результата запроса (без отображения части запроса):

<div class="entry">
    <?php echo $selected_element_of_table['text'];?>
</div>

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

Кто-нибудь имеет представление о моей проблеме?Стоит ли менять кодировку кодировки?

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

1 Ответ

2 голосов
/ 07 октября 2011

Несколько вещей, которые нужно попробовать:

На страницах, которые будут отображать Содержимое UTF-8 , в заголовке укажите:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

В вашем PHP долюбой вывод в браузер, включая заголовок PHP типа контента :

header ('Content-type: text/html; charset=utf-8');

Перед запуском SQL для извлечения контента используйте mysql_set_charset :

mysql_set_charset('utf8',$link); 
// $link is optional, refers to your DB connection

Если вы хотите, чтобы выводилось перерывов / возвратов каретки, оберните выводимый текст в nl2br ($ output)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...