Como você determina o conjunto de caracteres de um shapefile?

25

Existe uma maneira de determinar o conjunto de caracteres usado para um dado shapefile?

Matthew Finlay
fonte

Respostas:

9

Tentativa e erro. Tente abrir o arquivo .dbf com o Ms Excel ou com o OpenOffice usando configurações diferentes até você acertar tudo.

Veja esta postagem para obter mais dicas: /programming/319095/how-do-i-determine-the-character-set-of-a-string

Pablo
fonte
Se nada se sabe sobre a codificação, vale a pena experimentar latin1 ou UTF-8 primeiro.
krlmlr
Abri o .dbf no Ms Excel e os caracteres aparecem normalmente. Como posso ver qual codificação do Excel está usando / detectando? Para que eu possa colocá-lo em QGIS ...
user3386170
12

Existem duas maneiras de os programas determinarem o conjunto de caracteres para um shapefile.

Andreas W. Bartels
fonte
+1 Esse link para uma página de formato de arquivo do dBase é ótimo. No entanto, as páginas de código do AFAIK nunca foram incluídas no formato dBase III. A referência existe a uma extensão FoxPro do formato, o que sugere que nem todos os arquivos .dbf terão informações sobre a página de códigos (ou, se o fizerem, pode ser o resultado de bytes de lixo aparecendo em uma área livre do cabeçalho ) Mas se você conseguir extrair essas informações, ainda é um bom começo para uma pesquisa por tentativa e erro. Bem-vindo ao nosso site!
whuber
Algumas bibliotecas python dbf podem ler a página de códigos se houver informações.
Paulo Scardine 6/08/12
5

O fileutilitário é capaz de adivinhar a codificação de um arquivo de texto. Use ogr2ogrpara uma conversão que preserva a codificação original se não houver .cpgarquivo :

ogr2ogr -f CSV file.csv file.dbf
file file.csv

Exemplo de saída:

file.csv: ISO-8859 text

Eu testei com duas das codificações mais frequentes, UTF-8 e latin1. Funciona imediatamente no Ubuntu, não tenho certeza sobre o OS X. Não conheço um fileutilitário no Windows.

NOTA : Assim que houver um .cpgarquivo correspondente que indique a codificação, ogr2ogro honrará e a saída estará em UTF-8. Mas se a saída CSV parecer correta, você saberá que as informações no .cpgarquivo são precisas.

krlmlr
fonte