Mã hóa ký tự nào được sử dụng bởi tệp DBF trong shapefiles?


52

Mã hóa ký tự nào được sử dụng bởi tệp dbf trong shapefiles? Có vẻ như nó được xử lý khác nhau, dựa trên chương trình và cài đặt mã hóa cục bộ của máy. Mã hóa nào là "đúng" - được chỉ định cho định dạng?


Bạn chắc chắn nên cấp cờ trả lời cho alfonx. @underdark Không xúc phạm!
JJD

Câu trả lời:


60

Tiêu chuẩn DBF ban đầu xác định sử dụng ISO8859-1 và chỉ ISO8859-1. Vì vậy, khi bạn nhận được một Shapefile thực sự phù hợp với tiêu chuẩn, nó phải là ISO8859-1. Tất nhiên, hạn chế (rất cũ) này là không thực sự có thể sử dụng ngày nay.

ArcGIS và Geopublisher, AtlasStyler và Geoserver bắt đầu mở rộng tiêu chuẩn để xác định mã hóa. Đối với ArcGIS , ví dụ: chỉ cần tạo tệp .cpg (có cùng tên cơ sở với các Shapefiles khác) và điền vào đó bằng tên của mã hóa.

ví dụ: tạo myshape.cpg với một texteditor và chèn 5 ký tự "UTF-8" và lưu nó. Nếu sau đó bạn mở Shapefile trong ArcGIS, nó sẽ đọc nội dung văn bản của DBF trong bộ ký tự đó.

Geoserver: Geoserver WFS có thể xuất bất kỳ lớp WFS nào dưới dạng Shapefile được nén. Khi điều này được thực hiện, một tệp .cst được chứa trong zip, thực hiện chính xác như tệp .cpg.

Chú ý: Tất cả điều này chỉ áp dụng cho dữ liệu, không phải tên cột. Bạn thực sự chỉ nên sử dụng ASCII trong tên cột của DBF nếu bạn muốn tệp có thể mở được với các chương trình khác.

Gợi ý: Để thay đổi mã hóa của DBF, hãy mở nó bằng OpenOffice Calc .. chọn SaveAs ... nhấp vào "Tùy chọn bộ lọc" ở dưới cùng bên trái và nhấn lưu. Sau đó, bạn có thể xác định mã hóa để chuyển đổi nội dung văn bản thành.


3
Bài đăng tuyệt vời! Thế giới sẽ là một nơi tốt hơn nếu mọi người vận chuyển shapefiles của họ với các tệp .cpg.
underdark

2
Bạn có tham khảo cho bộ ký tự ISO8559-1 là bộ ký tự chính thức không? Thông số kỹ thuật DBF tôi tìm thấy rất ngắn và không đề cập đến nó.
Chris

3
Nếu bạn nhận được General input/output errorcó lẽ bạn chưa cài đặt Base . Vấn đề là như nhau cho dù bạn sử dụng OpenOffice hay LibreScript.
JJD

2
+1 cho gợi ý OpenOffice / LibreScript Calc. Ở đó bạn có thể chắc chắn rằng tệp DBF có mã hóa giả định. Tuy nhiên, như JJD đã chỉ ra, cũng trên Ubuntu, bạn phải cài đặt LibreOffice Base để mở các tệp DBF trong Calc.
Mary

1
Một .cpgtệp được cho là hoạt động tốt trong QGIS, kể từ libgdal 1.9. Đôi khi nó thậm chí dường như là cần thiết: ssrebelious.wordpress.com/2012/03/11/ Khăn
krlmlr

11

Tôi khá chắc chắn rằng không có mã hóa "đúng". Một tệp .dbf có thể ở bất kỳ mã hóa nào và bạn sẽ có thể mở Shapefile và đọc các thuộc tính chính xác nếu bạn biết.

Bạn có thể tìm thấy sách trắng ESRI tại đây: http://www.esri.com/l Library / whyitapers / pdfs / shapefile.pdf

Tôi thường mong đợi một shapefile là UTF-8 hoặc tại địa phương của quốc gia được bảo hiểm (thường là một số mã hóa tiếng Latin).


7

Bất cứ khi nào tôi thấy một câu hỏi về mã hóa, tôi giới thiệu mọi người đến bài viết này: http://www.joelonsoftware.com/articles/Unicode.html

Như nó nói:

Không có nghĩa là có một chuỗi mà không biết nó sử dụng mã hóa gì. Bạn không còn có thể dính đầu vào cát và giả vờ rằng văn bản "đơn giản" là ASCII.


Chính xác! Nó xảy ra tất cả thời gian mà mọi người nói với tôi rằng tôi đã gửi cho họ một tệp trong mã hóa sai chỉ vì một trình soạn thảo (np ++ hầu hết các lần) đưa ra những phỏng đoán hoang dã. +1
unicoletti

3

Một cách đơn giản là chuyển đổi tệp shp thành tệp csv. Và sử dụng enca hoặc iconv để phát hiện mã hóa. Tôi đã thử với các tệp UTF8 và gb18030 và nó hoạt động.


+1 cho câu trả lời là một cách để tìm ra mã hóa hiện tại. Mặc dù vậy, tôi nghĩ rằng câu hỏi đang tìm kiếm nhiều hơn về mã hóa tiêu chuẩn sẽ là gì, nếu có.
Nhận không gian

bài đăng này cũng giải quyết câu hỏi về cách phát hiện mã hóa: gis.stackexchange.com/questions/12218/ Lời
toms
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.