Newsgroup: it.scienza.informatica
Titolo: Codifiche caratteri - quale l'insieme più ristretto?

Salve a tutti,
cercherò di descrivervi il mio problema i maniera più "analitica" possibile:
1) scenario: ho n-client che scambiano dati con un server tramite 
richieste http; devo definire una specie di protocollo che permetta 
l'identificazione della "semantica" (parolone, lo so, ma non mi viene in 
mente niente di più descrittivo) dei dati scambiati, che si trovano nel 
payload della richiesta http;
2) problema: dovrei poter utilizzare tre divesri separatori per questi 
dati. Questi sono costituiti principalmente da stringhe e codice 
javascript. Avevo pensato di utilizzare qualche carattere non ammesso in 
javascript, tipo §, •, † ma a questo punto inizia il problema vero e 
proprio: quale codifica utilizzare?
il fatto è che devo utilizzare caratteri che siano sempre gli stessi, 
anche se la stringa viene "tradotta" da una codifica all'altra. Dunque, 
vi chiedo: qual è il set di caratteri "più ristretto", si insomma la 
"intersezione" tra le codifiche, che mi permetta di non avere 
trasformazioni indesiderate? Pensavo infatti di scegliere in questo set 
di caratteri i miei sepratori.
Grazie in anticipo,
Giulio

 proprio: quale codifica utilizzare?
In generale, per definire il punto finale di una sequenza ci sono due 
tecniche:
1) Alla fine della sequenza poni un terminatore.
2) All'inizio della sequenza poni la lunghezza della sequenza.
La prima tecnica semplifica il compito di scrivere la sequenza, ma 
complica il compito di leggere la sequenza, e richiede che il 
terminatore non sia ammissibile all'interno della sequenza.
La seconda tecnica, semplifica il compito di leggere la sequenza, ma 
complica il compito di scriverla, e permette l'inserimento di qualunque 
simbolo all'interno della sequenza.
La complicazione sta nel fatto che prima di scrivere la sequenza devi 
sapere gia' esattamente quanto sara' lunga. se non hai questa 
informazione, devi prima scrivere la sequenza in una memoria locale, 
misurarne la lunghezza, e poi trasmetterla.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 1) Alla fine della sequenza poni un terminatore.
in generale direi che è la soluzione che fa al caso mio (anche perchè 
non posso utilizzare l'altra). La domanda a questo punto è: quale 
carattere/insieme di caratteri di terminazione posso usare? L'idea 
sarebbe quella di utilizzare caratteri che sono comuni a tutte le 
codifiche. Hai qualche consiglio in merito?
Ciao,
Giulio

Giulio Petrucci ha scritto:

Un'altra soluzione potrebbe essere dividere i dati in trame a dimensione fissa e
realizzare una trama speciale che determina la fine della trasmissione.
Se è possibile applicare un sistema simile al bit stuffing utilizzato per le
trasmissioni HDCL hai risolto tutti i problemi senza sacrificare alcun carattere.
Il problema è vedere come fare lo stuffing su una sequenza di caratteri.

 trasmissioni HDCL hai risolto tutti i problemi senza sacrificare alcun carattere.
Purtroppo non posso lavorare a così basso livello. Considera che laso 
client non posso scendere "sotto" al protocollo http.
Ciao,
Giulio

 carattere/insieme di caratteri di terminazione posso usare?
Se non conosci a priori i possibili encoding, non puoi nemmeno ragionare in 
termini di caratteri. Se sai che il contenuto può adottare soltanto 
un'alternativa tra, diciamo, UTF-8, Latin1 o ASCII, allora come separatore 
o terminatore puoi usare qualsiasi valore inferiore a 31 e diverso dal 
valore di quei pochi caratteri ASCII di quel range che sono comunemente 
usati ("\n, "\t", "\r"). Ma se ammetti anche l'UTF-16, non lo puoi fare, 
perché in UTF-16 l'unità minima è rappresentata da 2 byte, ciascuno dei 
quali puo benissimo assumere un valore compreso tra 0 e 31.     
Max

Giulio Petrucci ha scritto:
 > Carlo Milanesi ha scritto:
 >> In generale, per definire il punto finale di una sequenza ci sono 
due tecniche:
 >> 1) Alla fine della sequenza poni un terminatore.
 >
 > in generale direi che è la soluzione che fa al caso mio (anche perchè 
non posso utilizzare l'altra).
Avrei detto il contrario.
 > La domanda a questo punto è: quale carattere/insieme di caratteri di 
terminazione posso usare? L'idea sarebbe quella di utilizzare caratteri 
che sono comuni a tutte le codifiche. Hai qualche consiglio in merito?
Lo zero binario. E' chiamato NUL sia in EBCDIC che in ASCII che in 
Unicode, e non dovrebbe essere incluso in nessun tipo di file di testo.


 Unicode, e non dovrebbe essere incluso in nessun tipo di file di testo.
Vale per le UTF?
Comunque grazie, ora vedo di ricercare un po' in rete.
Ciao,
Giulio