2013-11-26 1 views
1

У меня есть сайт в стадии разработки. Я пробовал следующий формат в своем сообщении, но он не отображается как есть. Я протестировал его в facebook/orkut, который отображает его как это:Отформатированный текст в сообщениях, таких как fb/orkut

███─█─────█─███─███─███ 
█───█─────█─█───█────█ 
███─█──█──█─██──██───█ 
──█─█─█─█─█─█───█────█ 
███─██───██─███─███──█ 

███─███──███─███─██───█─███─ 
█───█─█───█──█───█─█──█─█──█ 
███─██────█──██──█──█─█─█──█ 
█───█─█───█──█───█───██─█──█ 
█───█──█─███─███─█────█─███─ 

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

███─█─────█─███─███─███ 
█───█─────█─█───█────█ 
███─█──█──█─██──██───█ 
──█─█─█─█─█─█───█────█ 
███─██───██─███─███──█ 

███─███──███─███─██───█─███─ 
█───█─█───█──█───█─█──█─█──█ 
███─██────█──██──█──█─█─█──█ 
█───█─█───█──█───█───██─█──█ 
█───█──█─███─███─█────█─███─ 

Если я просмотреть его без сохранения в базе данных с помощью AJAX это выглядит точно так же, как i t есть. Я использовал следующий PHP функцию перед сохранением в базу данных:

$content=$_POST['content']; 
    $content = str_replace("<br/>","\n",$content);//br2nl 
    $content=mysql_real_escape_string($content); 

Что я должен на самом деле сделать так, чтобы тексты могут быть отформатированы таким образом, как это сделано в фейсбуке или Orkut и т.д.? Также я использовал URL кодирования перед отправкой текста на сервер:

var params = "content=" + encodeURIComponent(content); 
+2

Это выглядит как вопрос кодирования. Попробуйте кодировать UTF-8. –

+0

Отметьте мое сообщение здесь: http://stackoverflow.com/questions/19702687/some-characters-become-in-my-wepage/19702728#19702728 – TiMESPLiNTER

+0

Спасибо. @ MarkusHofmann, я использовал кодировку URL перед отправкой текста в сервер: var params = "content =" + encodeURIComponent (content); Должен ли я использовать UTF-8 вместо этого? – rosemary

ответ

0

Добавьте кодировок мета-тег в раздел заголовка страницы HTML, где будут показаны специальные символы:

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>...</title> 
    ... 

И закодировать пост перед тем эхо:

<?php 
echo utf8_encode($postBody); 

ИЛИ если выше не работает, попробуйте:

echo html_entity_decode($postBody, ENT_QUOTES, 'UTF-8'); 

Это должно сделать трюк.

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

ALTER TABLE posts CHARACTER SET utf8 COLLATE utf8_general_ci; 

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

$mysqli->set_charset("utf8"); // Not available on Windows OS 
+0

Многое спасибо @Markus Hofmann, второй работает отлично для меня. В случае браузеров, отличных от HTML5, следует ли вместо этого использовать ? снаружи ? – rosemary

+1

Я бы придерживался стандарта HTML5, поскольку он является будущим доказательством, а старый синтаксис устарел и больше не рекомендуется. Также имейте в виду, что элемент '' должен находиться внутри элемента '' и в первых 512 байтах страницы, так как некоторые браузеры просматривают только эти первые байты, прежде чем выбирать набор символов для страницы. См. [This] (https://code.google.com/p/doctype-mirror/wiki/MetaCharsetAttribute#Browser_compatibility) и [this] (https: //developer.mozilla.org/en-US/docs/Web/HTML/Element/meta # attr-charset) для более подробной информации о совместимости браузера и рекомендуемом использовании. –

+0

Я не могу не сказать снова спасибо доброму сердцу @ Маркус Хофманн. Но для совместимости с кросс-браузером я должен использовать как откат для старых браузеров. Должен ли я? – rosemary

Смежные вопросы