การเข้ารหัสอักขระใดถูกใช้โดยไฟล์ DBF ใน shapefiles


52

การเข้ารหัสอักขระใดถูกใช้โดย dbf-file ใน shapefiles ดูเหมือนว่ามันจะถูกจัดการแตกต่างกันไปตามโปรแกรมและการตั้งค่าการเข้ารหัสในตัวเครื่อง การเข้ารหัสใดที่ 'ถูกต้อง' - ระบุไว้สำหรับรูปแบบหรือไม่


คุณควรให้การตั้งค่าสถานะคำตอบกับ alfonx อย่างแน่นอน @underdark ไม่มีความผิด!
JJD

คำตอบ:


60

มาตรฐาน DBF ดั้งเดิมกำหนดให้ใช้ISO8859-1และ ISO8859-1 เท่านั้น ดังนั้นเมื่อคุณได้รับ Shapefile ที่เป็นมาตรฐานจริง ๆ ควรเป็น ISO8859-1 แน่นอนว่าข้อ จำกัด (เก่ามาก) นี้ไม่สามารถใช้งานได้ในปัจจุบัน

ArcGIS และ Geopublisher, AtlasStyler และ Geoserver เริ่มขยายมาตรฐานเพื่อกำหนดการเข้ารหัส สำหรับArcGISเช่นเพียงแค่สร้างไฟล์. cpg (ที่มีชื่อไฟล์เดียวกับ Shapefiles อื่น ๆ ) และเติมด้วยชื่อของการเข้ารหัส

เช่นสร้าง myshape.cpg ด้วย texteditor และแทรก 5 ตัวอักษร "UTF-8" และบันทึก ถ้าคุณเปิด Shapefile ใน ArcGIS มันจะอ่านเนื้อหาที่เป็นข้อความของ DBF ในชุดอักขระนั้น

Geoserver: Geoserver WFS สามารถส่งออกเลเยอร์ WFS ใด ๆ เป็น Shapefile ที่ซิป เมื่อดำเนินการเสร็จแล้วไฟล์. cst จะอยู่ในไฟล์ zip ซึ่งจะเหมือนกับไฟล์. cpg

ข้อควรสนใจ: ทั้งหมดนี้ใช้ได้กับข้อมูลเท่านั้นไม่ใช่ชื่อคอลัมน์ คุณควรใช้ ASCII ในชื่อคอลัมน์ของ DBF เท่านั้นหากคุณต้องการให้ไฟล์สามารถเปิดได้กับโปรแกรมอื่น ๆ

คำแนะนำ: หากต้องการเปลี่ยนการเข้ารหัสของ DBF ให้เปิดด้วย OpenOffice Calc .. เลือก SaveAs ... คลิกที่ "ตัวเลือกตัวกรอง" ที่ด้านล่างซ้ายแล้วกดบันทึก จากนั้นคุณสามารถกำหนดการเข้ารหัสเพื่อแปลงเนื้อหาข้อความเป็น


3
โพสต์ที่ยอดเยี่ยม! โลกจะเป็นสถานที่ที่ดีกว่าถ้ามีคนส่งไฟล์รูปร่างด้วยไฟล์. cpg
underdark

2
คุณมีการอ้างอิงสำหรับชุดอักขระ ISO8559-1 เป็นชุดอักขระอย่างเป็นทางการหรือไม่? รายละเอียด DBF ที่ฉันพบนั้นสั้นมากและไม่ได้กล่าวถึง
Chris

3
หากคุณได้รับGeneral input/output errorคุณอาจไม่ได้มีการติดตั้งฐาน ปัญหาเหมือนกันไม่ว่าคุณจะใช้ OpenOffice หรือ LibreOffice
JJD

2
+1 สำหรับคำใบ้ของ OpenOffice / LibreOffice Calc คุณสามารถมั่นใจได้ว่าไฟล์ DBF มีการเข้ารหัสที่สันนิษฐาน อย่างไรก็ตามอย่างที่ JJD ชี้ให้เห็นนอกจากนี้บน Ubuntu คุณต้องติดตั้ง LibreOffice Base เพื่อเปิดไฟล์ DBF ใน Calc
Marian

1
.cpgไฟล์ควรจะทำงานได้ดีใน QGIS เกินไป ณ libgdal 1.9 บางครั้งดูเหมือนว่าจำเป็นด้วย: ssrebelious.wordpress.com/2012/03/11/…
krlmlr

11

ฉันค่อนข้างแน่ใจว่าไม่มีการเข้ารหัส "ถูกต้อง" ไฟล์. dbf สามารถเข้ารหัสได้และคุณจะสามารถเปิด Shapefile และอ่านแอตทริบิวต์ได้อย่างถูกต้องหากคุณรู้

คุณสามารถค้นหากระดาษขาว ESRI ได้ที่นี่: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

ฉันมักจะคาดหวังว่ารูปร่างไฟล์จะเป็น UTF-8 หรือในท้องถิ่นของประเทศที่ครอบคลุม (มักจะมีการเข้ารหัสภาษาละตินบางส่วน)


7

เมื่อใดก็ตามที่ฉันเห็นคำถามเกี่ยวกับการเข้ารหัสฉันแนะนำคนถึงบทความนี้: http://www.joelonsoftware.com/articles/Unicode.html

ตามที่บอกว่า:

มันไม่สมเหตุสมผลที่จะมีสตริงโดยไม่รู้ว่าใช้การเข้ารหัสอะไร คุณไม่สามารถเกาะหัวในทรายได้อีกต่อไปและแสร้งว่าข้อความ "ธรรมดา" คือ ASCII


แน่นอน! มันเกิดขึ้นตลอดเวลาที่มีคนบอกฉันว่าฉันส่งไฟล์พวกเขาในการเข้ารหัสที่ผิดเพียงเพราะบรรณาธิการ (np ++ ส่วนใหญ่ครั้ง) จะเดาเดา +1
unicoletti

3

วิธีง่ายๆคือแปลงไฟล์ shp เป็นไฟล์ csv และใช้ enca หรือ iconv เพื่อตรวจจับการเข้ารหัส ฉันลองใช้ไฟล์ UTF8 และ gb18030 แล้วใช้งานได้


+1 สำหรับคำตอบเพื่อหาวิธีการเข้ารหัสปัจจุบัน ฉันคิดว่าคำถามนั้นกำลังมองหาว่าการเข้ารหัสมาตรฐานจะเป็นอย่างไรถ้ามี
Spatial

โพสต์นี้ยังอยู่คำถามของวิธีการตรวจสอบการเข้ารหัส: gis.stackexchange.com/questions/12218/...
TOMS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.