Questo è il comando enc2xs che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
enc2xs -- Generatore di moduli di codifica Perl
SINOSSI
enc2xs -[opzioni]
enc2xs -M ModName mapfiles...
enc2xs -C
DESCRIZIONE
enc2xs costruisce un'estensione Perl per l'uso da parte di Encode da entrambi i caratteri Unicode Mapping
file (.ucm) o file di codifica Tcl (.enc). Oltre ad essere utilizzato internamente durante la costruzione
processo del modulo Encode, è possibile utilizzare enc2xs per aggiungere la tua codifica a perl. No
è necessaria la conoscenza di XS.
Presto Guida
Se vuoi sapere il meno possibile su Perl ma devi aggiungere una nuova codifica, basta
leggi questo capitolo e dimentica il resto.
0. Prepara un file .ucm. Puoi ottenerlo da qualche parte o puoi scrivere il tuo da
gratta o puoi prenderne uno dalla distribuzione Encode e personalizzarlo. Per il
Formato UCM, vedere il prossimo capitolo. Nell'esempio qui sotto, chiamerò il mio teorico
codifica myascii, definito in mio.ucm. "$" è un prompt della shell.
$ ls -F
mio.ucm
1. Emettere un comando come segue;
$ enc2xs -M Mio mio.ucm
generare Makefile.PL
generando My.pm
generare README
generare cambiamenti
Ora dai un'occhiata alla tua directory corrente. Dovrebbe sembrare come questo.
$ ls -F
Makefile.PL Mio.pm mio.ucm t/
Sono stati creati i seguenti file.
Makefile.PL - Script MakeMaker
My.pm - Sottomodulo di codifica
t/My.t - file di prova
1.1
Se vuoi che *.ucm sia installato insieme ai moduli, procedi come segue;
$ mkdir Codifica
$ mv *.ucm Codifica
$ enc2xs -M La mia codifica/*ucm
2. Modificare i file generati. Non devi farlo se non hai tempo E non hai intenzione di farlo
darlo a qualcun altro. Ma è una buona idea modificare il pod e aggiungere altri test.
3. Ora impartisci un comando che tutti i Perl Monger amano:
$ perl Makefile.PL
Scrivere Makefile per Encode::My
4. Ora tutto ciò che devi fare è fare.
$ Make
cp Mio.pm blib/lib/Encode/Mio.pm
/usr/local/bin/perl /usr/local/bin/enc2xs -Q -O \
-o codifica_t.c -f codifica_t.fnm
Leggere myascii (myascii)
Scrivere modulo compilato
128 byte nelle tabelle di stringhe
384 byte (75%) salvati individuando duplicati
1 byte (0.775%) salvato utilizzando le sottostringhe
....
chmod 644 blib/arch/auto/Codifica/Mio/Mio.bs
$
Il tempo necessario varia a seconda della velocità della tua macchina e delle dimensioni del tuo
la codifica è. A meno che tu non stia lavorando a qualcosa di grande come euc-tw, non ci vorrà troppo
lungo.
5. Puoi già "fare installazione" ma dovresti prima provare.
$ fai il test
PERL_DL_NONLAZY=1 /usr/local/bin/perl -Iblib/arch -Iblib/lib \
-e' usa Test::Harness qw(&runtests $verbose); \
$verboso=0; runtests @ARGV;' t/*.t
t/Mio....ok
Tutti i test hanno avuto successo.
File=1, Test=2, 0 secondi di clock
(0.09 cursore + 0.01 csys = 0.09 CPU)
6. Se sei soddisfatto del risultato del test, basta "fare installazione"
7. Se vuoi aggiungere la tua codifica all'elenco di caricamento a richiesta di Encode (così non devi
"usa Encode::YourEncoding"), esegui
enc2xs -C
per aggiornare Encode::ConfigLocal, un modulo che controlla le impostazioni locali. Dopo di che,
"usa Codifica;" è sufficiente per caricare le tue codifiche su richiesta.
I Unicode Carattere Mappa
Encode utilizza il formato Unicode Character Map (UCM) per le mappature dei caratteri di origine. Questo
è utilizzato dal pacchetto ICU di IBM ed è stato adottato da Nick Ing-Simmons per l'uso con il
Modulo di codifica. Poiché UCM è più flessibile della mappa di codifica di Tcl e molto più user-
amichevole, questo è il formato consigliato per Codifica ora.
Un file UCM ha questo aspetto.
#
# Commenti
#
"US-ascii" # Obbligatorio
"ascii" # Opzionale
1 # Richiesto; di solito 1
1 # Massimo # di byte/carattere
\x3F # Carattere di sostituzione
#
FASCINO
\x0000 |00 #
\x0001 |01 #
\x0002 |02 #
....
\x007C |7 # LINEA VERTICALE
\x007D |7 # STAFFA RICCIA DESTRA
\x007E |7 # TILDE
\x007F |7 #
FINE CHARMAP
· Tutto ciò che segue "#" viene trattato come un commento.
· La sezione dell'intestazione continua fino a una riga contenente la parola CHARMAP. Questa sezione
ha una forma di APPREZZIAMO, una coppia per riga. Le stringhe usate come valori devono essere
citato. Le bareword sono trattate come numeri. \xXX rappresenta un byte.
La maggior parte delle parole chiave è autoesplicativa. sottocarro significa carattere di sostituzione, non
sottocarattere. Quando decodifichi una sequenza Unicode in questa codifica ma nessuna corrispondenza
carattere viene trovato, verrà utilizzata la sequenza di byte qui definita. Per la maggior parte dei casi, il
il valore qui è \x3F; in ASCII, questo è un punto interrogativo.
· CHARMAP avvia la sezione della mappa dei caratteri. Ogni riga ha una forma come segue:
\xXX.. |0 # commento
^ ^ ^
| | +- Bandiera di riserva
| +-------- Sequenza di byte codificata
+-------------- ID carattere Unicode in esadecimale
Il formato è più o meno lo stesso di una sezione di intestazione eccetto per il flag di fallback: |
seguito da 0..3. Il significato dei possibili valori è il seguente:
|0 Viaggio di andata e ritorno sicuro. Un carattere decodificato in Unicode viene codificato nello stesso byte
sequenza. La maggior parte dei personaggi ha questa bandiera.
|1 Fallback per unicode -> codifica. Quando visto, enc2xs aggiunge questo carattere per il
codifica solo la mappa.
|2 Salta la mappatura dei sub-char se non ci sono code point.
|3 Fallback per la codifica -> unicode. Quando visto, enc2xs aggiunge questo carattere per il
decodificare solo la mappa.
· E infine, END OF CHARMAP conclude la sezione.
Quando crei manualmente un file UCM, devi copiare ascii.ucm o un file esistente
codifica che è vicina alla tua, piuttosto che scriverne una da zero.
Quando lo fai, assicurati di andartene almeno U0000 a U0020 così com'è, a meno che il tuo ambiente
è EBCDIC.
AVVERTIMENTO: non tutte le funzionalità di UCM sono implementate. Ad esempio, icu:state non viene utilizzato.
Per questo motivo, devi scrivere un modulo perl se vuoi supportare algoritmico
codifiche, in particolare la serie ISO-2022. Tali moduli includono Encode::JP::2022_JP,
Codifica::KR::2022_KR e Codifica::TW::HZ.
cimasa con duplicare mappature
Quando crei una mappa, DEVI rendere sicure le tue mappature di andata e ritorno. Questo è,
"encode('your-encoding', decode('your-encoding', $data)) eq $data" sta per all
caratteri contrassegnati come "|0". Ecco come essere sicuri:
· Ordina la tua mappa in ordine Unicode.
· Quando si dispone di una voce duplicata, contrassegnarne una con '|1' o '|3'.
· E assicurati che la voce '|1' o '|3' SEGUI la voce '|0'.
Ecco un esempio da big5-eten.
\xF2550\xF9 |9
\xA2550\xA2 |4
Codifica interna -> Unicode e Unicode -> Mappa di codifica ha questo aspetto;
Da E a UU a E
--------------------------------------
\xF9\xF9 => U2550 U2550 => \xF9\xF9
\xA2\xA4 => U2550
Quindi è sicuro di andata e ritorno per \xF9\xF9. Ma se la linea sopra è capovolta, ecco cosa
accade.
Da E a UU a E
--------------------------------------
\xA2\xA4 => U2550 U2550 => \xF9\xF9
(\xF9\xF9 => U2550 ora è sovrascritto!)
Il pacchetto Encode viene fornito con umlint, un'utilità rozza ma sufficiente per verificare il
integrità di un file UCM. Controlla nella directory Encode/bin per questo.
In caso di dubbio, puoi usare umsort, ancora un'altra utilità nella directory Encode/bin.
Preferiti
· Pagina iniziale della terapia intensivahttp://www.icu-project.org/>
· Tabelle di mappatura dei caratteri ICUhttp://site.icu-project.org/charts/charset>
· ICU: dati di conversionehttp://www.icu-project.org/userguide/conversion-data.html>
Usa enc2xs online utilizzando i servizi onworks.net