Ho pochi problemi con la codifica dei caratteri.Database, codifica dei caratteri, PDF e XML
La situazione
un file viene caricato che viene convertito in XML. La codifica dei caratteri di questo file varia, tuttavia possono apparire virgolette intelligenti, entità e vari ASCII. Una volta convertito in XML, questo file viene archiviato in un database. Su richiesta dell'utente, XML può essere estratto dal database e convertito in un array dove viene quindi creato in un PDF.
Il problema
codifica dei caratteri. Fin dall'inizio, la codifica dei caratteri ha avuto un grosso problema. Mi piacerebbe sapere;
- Quale codifica di carattere generalmente copre l'intero "spettro". Ad esempio, un
°
che non viene riconosciuto durante l'analisi dell'XML o di un preventivo intelligente (’
). La citazione intelligente diventerà’
, ecc. Ecc. - Come memorizzare XML in un database. La crittografia è una possibilità, tuttavia la codifica del database è dove mi sto perdendo.
- Come ottenere le entità, virgolette intelligenti (e altri caratteri che possono causare problemi) per apparire correttamente in un database e con un
Å
di fronte a roba.
I tentativi di un lavoro in giro
mi hanno fatto varie funzioni che "il tentativo" per risolvere il mio problema - convertire alcuni caratteri in un altro. Tuttavia, presumo che questo sia il interamente modo sbagliato di farlo e dovrei cambiare la codifica dei caratteri.
/*
* Converts smart quotes to ascii
*/
function convert_smart_quotes($string) {
$string = iconv("UTF-8", "UTF-32", $string);
$string = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-32');
$string = str_replace('', '', $string);
$search = array('‘', '’', '“', '”', '—');
$replace= array("'", "'", '"', '"', '-');
$string = str_replace($search, $replace, $string);
return $string;
}
/*
* Converts some entities to an ISO format?
*
* Example : ° => °
*/
function entity_to_iso($string) {
return html_entity_decode($string, ENT_QUOTES & ~ENT_COMPAT, 'ISO-8859-1');
}
In ultima analisi, il mio problema risiede nel fatto che io non conosco la codifica del file che viene caricato. Ho avuto un'idea di un switch
che tenta di convertire i caratteri in qualcosa di più database e "PDF friendly". Tuttavia, molto Google ha portato ad un amaro aggiramento del lavoro o agli array che str_replace
una cosa all'altra. Questa è davvero la soluzione?
Qualsiasi consiglio, soluzione o dito puntato in una direzione migliore sono tutti utili e molto apprezzati. Grazie.
ciao amico, ho un problema simile sei arrivato ovunque con questo? – Drakoumel