CKeditor editor de texto enriquecido que muestra tags html en el navegador

Acabo de instalar el editor WYSIWYG de texto enriquecido de CKeditor en un sitio que estoy construyendo y parece estar funcionando bien, excepto por el hecho de que inserta texto en mi base de datos mysql como html codificado en lugar de html normal y luego cuando el navegador muestra este texto convierte los datos codificados en html regular que luego se muestra en el navegador que muestra las tags html y ninguno de los estilos !?

por ejemplo, tecleo:

"This is text" 

en el editor y luego se inserta

 <p>This is text</p> 

en la base de datos. Luego, cuando se llama a la página, el navegador convierte lo anterior y sobrescribe lo siguiente en la página:

 

This is text

obviamente solo quiero que "This is text" para mostrar en la página.

¿Alguien sabe por qué está sucediendo esto / cómo resolverlo, por favor?

Cualquier sugerencia sería bienvenida.

Aclamaciones

Si no desea que CKEditor cree párrafos para usted, configure config.autoParagraph en false. Además, es posible que desee cambiar el comportamiento de la tecla enter con config.enterMode configurado en CKEDITOR.ENTER_BR .

Y con respecto a la desaparición de estilos …


EDITAR: OK, parece que me perdí tu punto.

¿Entonces su sitio web muestra marcado HTML en lugar de HTML mientras procesa lo que escribió? Entonces el problema es su lado del servidor en lugar de CKEditor. Puede verificar en su consola que CKEDITOR.instances.yourInstance.getData() produce el HTML correcto, sin protección:

 

This is text

// Right!

Si es así, y creo firmemente que lo es, CKEditor está bien y esta es su aplicación de servidor que está convirtiendo caracteres especiales en entidades (es decir, como PHP htmlspecialchars ) mientras guarda en la base de datos. No mencionaste qué tipo de framework / lenguaje usas allí, así que puedo decirte que es para asegurar la entrada del usuario para evitar secuencias de comandos entre sitios, romper diseños, etc. y todos los frameworks populares te permiten deshabilitar esa función para un campo particular Simplemente consulte la documentación.

Los lenguajes modernos de plantillas tienden a autoescalar la entrada html. Por ejemplo, en DTL se mostraría correctamente en la plantilla simplemente usando {{object.field_name | safe}} Esta es una acción deseada, ya que la entrada del usuario no se considera confiable y puede considerarse maliciosa.