importazione shape con caratteri misti latino/cirillico in SpatiaLite

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

importazione shape con caratteri misti latino/cirillico in SpatiaLite

Matteo Ghetta
Ciao a tutti,
mi sto scontrando con una difficoltà piuttosto fastidiosa.
Ho uno shape di punti (sono città della Bosnia che provengono da OSM per intenderci) che vorrei importare in un database SL.
Ora, avendo bisogno di mostrare le etichette dei nomi delle città in QGIS, a volte ho modificato a mano la colonna del nome interessato trasformando il cirillico in caratteri latini leggibili.

Fin qui spero di essere stato chiaro.

Ora, volendo importare lo shape in un db SL con DB Manager non mi dà errori ma dopo 15 minuti buoni che gira capisco che c'è qualcosa che non va.
Con SL GUI infatti mi specifica un problema di caratteri:
* se imposto UTF-8 ho come errore -> load shp error:Invalid character sequence
* se vado a naso e provo a scegliere qualche codifica in cirillico mi trovo una tabella degli attributi piena di buchi

Lo shape in QGIS è stato esportato usando System come codifica, ma ho provato anche a esportarlo forzando UTF-8 e provando a importarlo in SL, ma ho sempre la tabella piena di bucherelli.

Mi sto perdendo in un bicchiere d'acqua?

Grazie a tutti

Matteo

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
Reply | Threaded
Open this post in threaded view
|

Re: importazione shape con caratteri misti latino/cirillico in SpatiaLite

Antonio Falciano
Il 11/02/2015 15:42, Matteo Ghetta ha scritto:

> Ciao a tutti,
> mi sto scontrando con una difficoltà  piuttosto fastidiosa.
> Ho uno shape di punti (sono città  della Bosnia che provengono da OSM
> per intenderci) che vorrei importare in un database SL.
> Ora, avendo bisogno di mostrare le etichette dei nomi delle città  in
> QGIS, a volte ho modificato a mano la colonna del nome interessato
> trasformando il cirillico in caratteri latini leggibili.
>
> Fin qui spero di essere stato chiaro.
>
> Ora, volendo importare lo shape in un db SL con DB Manager non mi dÃ
> errori ma dopo 15 minuti buoni che gira capisco che c'Ú qualcosa che
> non va.
> Con SL GUI infatti mi specifica un problema di caratteri:
> * se imposto UTF-8 ho come errore -> load shp error:Invalid character
> sequence
> * se vado a naso e provo a scegliere qualche codifica in cirillico mi
> trovo una tabella degli attributi piena di buchi
>
> Lo shape in QGIS Ú stato esportato usando System come codifica, ma ho
> provato anche a esportarlo forzando UTF-8 e provando a importarlo in SL,
> ma ho sempre la tabella piena di bucherelli.
>
> Mi sto perdendo in un bicchiere d'acqua?

Hai provato con Latin-2 (ISO-8859-2)?
http://en.wikipedia.org/wiki/ISO/IEC_8859-2

ciao
Antonio

--
Antonio Falciano
http://www.linkedin.com/in/antoniofalciano
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
Reply | Threaded
Open this post in threaded view
|

Re: importazione shape con caratteri misti latino/cirillico in SpatiaLite

a.furieri
In reply to this post by Matteo Ghetta
Ciao Matteo,

il probeblema del charset non e' poi troppo complesso, basta solo
avere ben presente come funziona.

nella notte dei tempi (prima di MS-DOS) c'era solo ASCII (o piu'
di preciso l'US-ASCII); funzionava benissimo, ma poteva codificare
solo ed esclusisavamente l'alfabeto anglo-americano: lettere
maiuscole e minuscole, numeri, parentesi ed interpuzioni.
gia' le vocali accentante italiane erano escluse.

con MS-DOS arrivano le "code pages"; nascono cosi' un visibilio
di nuovi charsets nazionali: c'e' quello tedesco con gli umlaut,
quello latino con le vocali accentate, quello cirillico, graco,
ebraico etc.
restano ancora fuori le lingue asiatiche (cinese e giapponese),
perche' non sono alfabatiche ma sillabiche; hanno decine di migliaia
di simboli ed in un solo byte non ci stanno proprio.
naturalmente nasce anche una enorme confusione, perche' a questo
punto il medesimo byte puo' significare tante lettere diverse;
per conservare fedelmente le informazioni occorre sempre sapere
con estrema precisione quale particolare tabella dei caratteri
deve essere utilizzata.

in tempi piu' recenti finalmente arrivano i charsets universali:
tipicamente Unicode ed UTF-8; questi finalmente ti consentono
di scrivere assieme in una medesima stringa parole latine, ebraiche,
arabe, cirilliche e persino cinesi e giapponesi.

Giusto per facilitarci la vita, Linux e Mac (e piu' o meno tutti
gli Unix) scelgono UTF-8; Windows invece sceglie Unicode.
ma Windows fatica persino a recepire Unicode, e per lungo tempo
preferisce continuare a basarsi su tanti charset nazionali
distinti: Latin-1, Latin-2, Arabic, Cyrillic etc
System non e' affatto un charset: significa semplicemente
"quello normale della piattaforma"; ergo Latin-1 sulle istallazioni
italiane, Cyrillic in quelle russe etc
e nota bene: i charsets di Windows non sono affatto i "code pages"
di ms-dos anche se spesso il nome e' identico; tecnicamente sono
diversi (ed ovviamente incompatibili).

veniamo ora finalmente al problema shapefile/spatialite.
sqlite internamente memorizza tutte le stringhe di testo in UTF-8,
quindi e' in grado di gestire qualsiasi lingua nota.
ma quando importi/esporti uno shapefile devi sempre specificare
esattamente quale charset deve essere utilizzato per convertire
i caratteri; se sbagli ottieni errori, ma piu' facilmente ancora
ottieni stringhe bizzarre ed illeggibili.


> Ora, avendo bisogno di mostrare le etichette dei nomi delle città in
> QGIS, a volte ho modificato a mano la colonna del nome interessato
> trasformando il cirillico in caratteri latini leggibili.
>

temo che la "chiave del mistero" si nasconda proprio qua; in
questo modo hai probabilmente creato un mostro, cioe' un DBF
in cui alcune strignhe sono codificate in Latin-1, mentre altre
sono invece codificate in Cyrillic.
visto che spatialite (e qualunque altro sw a me noto) partono
sempre dal presupposto che tutto il file per intero adotti solo
una singola codifica, ora qualunque filtro charset fallira':
se gli dici che e' Latin-1 verranno sbagliate tutte le scritte
in Cirillico; se gli dici che e' Cyrillic verranno sbaglate
tutte le scritte latine; non se ne esce :-D

nota bena: e' un papocchio tipico degli Shapefile su cui sono
state fatte modifiche "a mano"; per rimettere tutto a posto
esiste un unico modo: olio di gomito e correggere manualmente
e con santa pazienza tutte le inconsistenze una alla volta,
fino a che si riesce a riportare tutto il DBF in un singolo
charset.

auguri ed in bocca al lupo
Sandro
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
Reply | Threaded
Open this post in threaded view
|

Re: importazione shape con caratteri misti latino/cirillico in SpatiaLite

Matteo Ghetta

Ciao sandro,
risposta chiarissima..
Avevo sperato di non aver creato un ibrido mostruoso... :-)

Mi ci metterò di buona lena..

Grazie

Matteo

Il giorno 11/feb/2015 18.45, <[hidden email]> ha scritto:
Ciao Matteo,

il probeblema del charset non e' poi troppo complesso, basta solo
avere ben presente come funziona.

nella notte dei tempi (prima di MS-DOS) c'era solo ASCII (o piu'
di preciso l'US-ASCII); funzionava benissimo, ma poteva codificare
solo ed esclusisavamente l'alfabeto anglo-americano: lettere
maiuscole e minuscole, numeri, parentesi ed interpuzioni.
gia' le vocali accentante italiane erano escluse.

con MS-DOS arrivano le "code pages"; nascono cosi' un visibilio
di nuovi charsets nazionali: c'e' quello tedesco con gli umlaut,
quello latino con le vocali accentate, quello cirillico, graco,
ebraico etc.
restano ancora fuori le lingue asiatiche (cinese e giapponese),
perche' non sono alfabatiche ma sillabiche; hanno decine di migliaia
di simboli ed in un solo byte non ci stanno proprio.
naturalmente nasce anche una enorme confusione, perche' a questo
punto il medesimo byte puo' significare tante lettere diverse;
per conservare fedelmente le informazioni occorre sempre sapere
con estrema precisione quale particolare tabella dei caratteri
deve essere utilizzata.

in tempi piu' recenti finalmente arrivano i charsets universali:
tipicamente Unicode ed UTF-8; questi finalmente ti consentono
di scrivere assieme in una medesima stringa parole latine, ebraiche,
arabe, cirilliche e persino cinesi e giapponesi.

Giusto per facilitarci la vita, Linux e Mac (e piu' o meno tutti
gli Unix) scelgono UTF-8; Windows invece sceglie Unicode.
ma Windows fatica persino a recepire Unicode, e per lungo tempo
preferisce continuare a basarsi su tanti charset nazionali
distinti: Latin-1, Latin-2, Arabic, Cyrillic etc
System non e' affatto un charset: significa semplicemente
"quello normale della piattaforma"; ergo Latin-1 sulle istallazioni
italiane, Cyrillic in quelle russe etc
e nota bene: i charsets di Windows non sono affatto i "code pages"
di ms-dos anche se spesso il nome e' identico; tecnicamente sono
diversi (ed ovviamente incompatibili).

veniamo ora finalmente al problema shapefile/spatialite.
sqlite internamente memorizza tutte le stringhe di testo in UTF-8,
quindi e' in grado di gestire qualsiasi lingua nota.
ma quando importi/esporti uno shapefile devi sempre specificare
esattamente quale charset deve essere utilizzato per convertire
i caratteri; se sbagli ottieni errori, ma piu' facilmente ancora
ottieni stringhe bizzarre ed illeggibili.


Ora, avendo bisogno di mostrare le etichette dei nomi delle città in
QGIS, a volte ho modificato a mano la colonna del nome interessato
trasformando il cirillico in caratteri latini leggibili.


temo che la "chiave del mistero" si nasconda proprio qua; in
questo modo hai probabilmente creato un mostro, cioe' un DBF
in cui alcune strignhe sono codificate in Latin-1, mentre altre
sono invece codificate in Cyrillic.
visto che spatialite (e qualunque altro sw a me noto) partono
sempre dal presupposto che tutto il file per intero adotti solo
una singola codifica, ora qualunque filtro charset fallira':
se gli dici che e' Latin-1 verranno sbagliate tutte le scritte
in Cirillico; se gli dici che e' Cyrillic verranno sbaglate
tutte le scritte latine; non se ne esce :-D

nota bena: e' un papocchio tipico degli Shapefile su cui sono
state fatte modifiche "a mano"; per rimettere tutto a posto
esiste un unico modo: olio di gomito e correggere manualmente
e con santa pazienza tutte le inconsistenze una alla volta,
fino a che si riesce a riportare tutto il DBF in un singolo
charset.

auguri ed in bocca al lupo
Sandro
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
666+40 iscritti al 5.6.2014