Estoy usando DOMDocument para manipular/modificar HTML antes de que salga a la página. Esto es solo un fragmento html, no una página completa. Mi problema inicial fue que todo el personaje francés se echó a perder, lo que pude corregir después de un poco de prueba y error. Ahora, parece que solo queda un problema: '¿el personaje se transforma en? .Problemas/caracteres de codificación DOMDocument transformados
El código:
<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->loadHTML(utf8_decode($row->text));
//Some pretty basic modification here, not even related to text
//reinsert HTML, and make sure to remove DOCTYPE, html and body that get added auto.
$row->text = utf8_encode(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML())));
?>
Sé que ensuciarse con el UTF-8 decodificar/codificar, pero esta es la única manera de hacer que funcione hasta el momento. Aquí es una cadena de ejemplo:
de entrada: Sans doute parce qu'il vient d'une atteindre fecha determinante dans son spectaculaire cheminement
Salida:?? Sans doute parce qu il vient d fecha atteindre une d & eacute ; terminante dans son spectaculaire cheminement
Si encuentro más detalles, los agregaré. ¡Gracias por tu tiempo y apoyo!
¿Qué conjunto de caracteres es '$ row-> text'?Si se trata de UTF-8 directamente (suponiendo que provenga de MySQL, necesitarás configurar el juego de caracteres de conexión en UTF8), entonces no necesitas las funciones 'utf8_ (en | de) code'. Fuerce el juego de caracteres a UTF8 y todos sus problemas * deben * desaparecer (suponiendo que de ahí viene '$ row') ... – ircmaxell
La entrada proviene de un CMS, todo configurado en utf8 (cadena, base de datos, etc.) Pero parece que mi problema no es lo que creo que era. Descubrí que la cadena que venía de mí está bien, y también la de mis compañeros de trabajo. El problema solo ocurre cuando la PC de mi cliente ingresa la cadena. Apuesto a que está pegando el texto de la palabra o lo que sea, y algunas cosas raras están sucediendo entonces. Tendré que excavar en esto. – Kyrotomia
Ahhh ... Entonces quizás verifique si hay caracteres UCS-2LE (UTF-16LE) (dado que es el valor predeterminado para Word IIRC) ... – ircmaxell