Domanda

Ho un database spaziale PostgreSQL \ PostGIS che contiene le colonne di testo ebraico. Il sistema funziona su Ubuntu, e tutto funziona perfettamente con UTF-8.

Sto cercando di scaricare alcuni tavoli in shapefile per un programma per Windows che può leggere solo le stringhe di Windows-1255. Purtroppo, pgsql2shp non ha alcuna opzione di codifica, anche se shp2pgsql ha, in modo che il programma di Widnows legge UTF-8 analizzato come di Windows-1255 dando Gibberish.

Ho cercato di creare una vista di Windows-1255 per le colonne della tabella, ma non ha trovato modo di farlo senza danneggiare il database.

Tutte le idee come convertire le tabelle?

Grazie,

Adam

UPDATE:

Ho pensato che questo uno è stato risolto (vedi la mia risposta personale), da ancora ottengo errori casuali come:

ERROR:  character 0x9f of encoding "WIN1255" has no equivalent in "UTF8"

Quello che voglio è una sorta di funzionalità Omettere: come bandiera iconv, che semplicemente non copia i caratteri di origine che non hanno alcuna codifica int obiettivo equivalente -c 's.

È stato utile?

Soluzione

Se davvero dire ASCII, non si può forse salvare caratteri ebraici. ASCII è solo il carattere a 7 bit impostare fino a \x7F.

Quindi, che tipo di stringhe funziona questo programma di Windows leggere? Se si tratta di ASCII, o Latin-1, non si otterrà mai ebraico. Più probabile che sia “la tabella codici attuale sistema”, anche (in modo fuorviante, ma comunemente) noto in Windows come ‘ANSI’.

Se questo è il caso si dovrà impostare la tabella codici di sistema su ogni macchina che esegue il programma di Windows per l'ebraico (tabella codici 1255). Credo file SHP non dispongono di informazioni di carattere codifica a tutti, quindi gli shapefile saranno sempre e solo funzionare correttamente su macchine con questa pagina code set (il default solo nel locale Israele). (A quanto pare le esportazioni .dbf possono avere un file .cpg accompagnamento per specificare la codifica, ma non ho idea se il programma in uso supporta tale.)

Allora dovreste esportare i dati come codice pagina 1255, o al più vicino si sta andando ad entrare in Postgres, ISO-8859-8. Dal momento che lo script di esportazione non sembra avere alcuna possibilità di fare altro che prendere byte direttamente nella banca dati, che avrebbe dovuto creare un database nella codifica ISO-8859-8 e trasferire tutti i dati dal database UTF-8 al 8859-8 uno, sia direttamente tramite query o, forse più facile, utilizzando pgdumpall e caricando lo SQL nel blocco note poi ri-salvataggio come Ebraico anziché UTF-8 (regolando le impostazioni di codifica cui SQL DDL come si va).

Mi chiedo se i creatori del programma di Windows potrebbero essere persuasi a supportare UTF-8? E 'un po' triste per essere bloccato con software specifico code-page in questo secolo.

Altri suggerimenti

Da all'interno dello script bash:

select ENCODING in UTF8 WIN1252 WIN1255 ISO-8859-8;
do
        if [[ -n $ENCODING ]]; then
                export PGCLIENTENCODING=$ENCODING;
                break
        else
                echo 'Invalid encoding.'
        fi
done

La dichiarazione export PGCLIENTENCODING=$ENCODING; fa il trucco.

Controllo tabelle di codifica ebraici e tabelle di pagina, si può vedere che ISO-8859-8 e di Windows-1255 non hanno alcun mapping per 0x9f.

I dati che si sta tentando di convertire potrebbe essere basato sul vecchio tabella codici 862 , una pagina di codice per l'ebraico sotto DOS. Codepage 862 mappe il codice 0x9f al carattere unicode "Latino: lettera F CON GANCIO", 0x0192.

È possibile esaminare simili errori "casuali", e decidere la mappatura per i codici non-windows-1255 nei dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top