2013-06-25 11 views
12

Ho bisogno di funzioni per convertire tra un carattere (ad esempio 'α') e il suo nome Unicode completo (ad esempio "GREEK SMALL LETTER ALPHA") in entrambe le direzioni.Come convertire un char nel suo completo nome Unicode?

La soluzione mi è venuta è quello di eseguire una ricerca nel standard Unicode disponibili on-line ufficiale: http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt, o meglio, nella sua copia locale memorizzata nella cache, eventualmente convertito in una collezione adatta in anticipo per migliorare le prestazioni di ricerca).

Esiste un modo più semplice per eseguire queste conversioni? Preferirei una soluzione in C#, ma sono benvenute anche soluzioni in altre lingue che possono essere adattate a C#/.NET. Grazie!

+0

La soluzione che hai mi sembra perfetta, a dire il vero. Il formato del file sembra abbastanza semplice, e non credo ci sia qualcos'altro nel framework. –

+0

Il collegamento a cui punti è solo come il primo milione e dovrebbe essere facilmente inserito in un dizionario. Il personaggio dovrebbe essere unico quindi usarlo come chiave in un dizionario. Per quanto riguarda la descrizione - se è unica potrebbe includere un secondo dizionario inverso per la velocità ma che raddoppierà la memoria. – Paparazzi

+0

@Blam "solo come il primo 1 milione" (più precisamente 1114109) è ** tutti loro **. –

risposta

0

se non si desidera mantenere in memoria la tabella dei nomi unicode, è sufficiente preparare il file di testo in cui l'offset del valore unicode moltiplicato per il nome della lunghezza massima unicode punterà al nome Unicode. per una lunghezza massima di 4 byte non sarà più di pochi megabyte. Se si desidera avere un'implementazione più compatta, raggruppare l'indirizzo di offset nel file in nomi unicode all'inizio del file indicizzato dal valore unicode, quindi ottenere una tabella dei nomi più compatta. ma devi preparare questo file anche se non è difficile.

+0

Il requisito è entrambe le direzioni. – Paparazzi

+0

Sì, sei in scrittura, possiamo creare un altro file con indice uguale ai valori hash dei nomi Unicode :-). sebbene la soluzione si riferisca in un commento alla domanda usa lib lib di dizionario che è migliore certamente che facendo bicicletta da zero. ma mi piace sempre l'arte del design della struttura dei dati. –

Problemi correlati