Sto lavorando con una struttura binaria, il cui scopo è quello di indicizzare il significato di bit specifici per qualsiasi codifica di caratteri in modo che possiamo attivare eventi mentre facciamo controlli specifici sul profilo.
Ogni schema di codifica dei caratteri ha un record di sistema associato. Il valore iniziale di questo record sarà un valore binario diunsigned long long
in C ++% e indica la lunghezza, in bit, dei caratteri codificati.
Seguendo la lunghezza ci sono tre valori, ognuno dei quali è un campo bit di quella lunghezza.
- offset_mask - definisce l'occorrenza di caratteri non stampabili all'interno del min, max di print_mask
- range_mask - definisce l'occorrenza del 50% più popolare dei caratteri stampabili
- print_mask - definisce il valore di occorrenza dei caratteri stampabili
La struttura dei profili è cambiata dall'op di questa domanda. Molto probabilmente cercherò di ridimensionare o comprimere questi valori a lungo termine invece di iniziare con intervalli dopo aver letto di più.
Devo scrivere alcune delle funzionalità di base per questi motivi principali.
- Deve adattarsi a una particolare architettura di eventi che stiamo utilizzando,
- Migliore comprensione della codifica dei caratteri. Ne ho bisogno.
- L'integrazione nel design non lineare esclude molte librerie senza hook speciali.
Non sono sicuro se esiste un meccanismo standard di codifica incrociata per comunicare già tali dati. Sto appena iniziando a esaminare come chardet potrebbe fare il profiling come suggerito da @amon. Il BOM Unicode sarebbe abbastanza semplice (per il mio progetto attuale) se tutte le codifiche fossero Unicode.
Naturalmente, idealmente, vorremmo supportare tutte le codifiche, ma non sto chiedendo l'implementazione - solo il caso generale.
Come possono questi profili essere popolati in modo efficiente, per produrre un set di maschere di bit che possiamo usare per far corrispondere le stringhe con caratteri comuni in più lingue?
Se hai suggerimenti di modifica, ti prego di essere libero, sono leggero quando si tratta di localizzazione, ed è per questo che sto cercando di raggiungere i più esperti. Qualsiasi avvertimento che potresti essere in grado di aiutarti sarà apprezzato.