Câu trả lời:
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.
General input/output error
có lẽ bạn chưa cài đặt Base . Vấn đề là như nhau cho dù bạn sử dụng OpenOffice hay LibreScript.
.cpg
tệ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
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).
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.
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.