เปลี่ยนการเข้ารหัสแหล่งข้อมูล Shapefile หรือไม่


9

ฉันพยายามเปลี่ยนเฉพาะการเข้ารหัสแหล่งข้อมูล shapefile ผ่านคุณสมบัติและวิธีการเข้ารหัส shapefiles จาก LATIN1 เป็น UTF-8 แต่มันไม่เปลี่ยน

หากไม่มีการบันทึกโครงการ QGIS ฉันไม่สามารถเปลี่ยนการเข้ารหัสแหล่งข้อมูล shapefile โดยตรงได้หรือไม่

ฉันยังลองใช้รหัสนี้มันแสดงการเปลี่ยนการเข้ารหัส แต่เมื่อฉันเปิด shapefile อีกครั้งมันจะแสดงการเข้ารหัสระบบเดิม:

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    layer.setProviderEncoding(u'UTF-8')
    layer.dataProvider().setEncoding(u'UTF-8')
    print layer.name(), layer.dataProvider().encoding()  

(ฉันไม่ได้บันทึกโครงการ QGIS เพียงแค่เข้าถึงและบันทึก shapefile โดยตรงเมื่อฉันบันทึกโครงการและทำงานนี้มันจะทำงานอย่างถูกต้อง )


คุณสามารถดูรหัสในปลั๊กอิน: shapefile_encoding_fixer
Jakob

ฉันสามารถบันทึกใน shapefile ผ่าน qgis โดยไม่บันทึกโครงการได้หรือไม่
มูฮัมหมัด Faizan Khan

คุณลองคลิกที่เลเยอร์ของคุณและใช้Save As...ตัวเลือกใช่ไหม?
โจเซฟ

@ โจเซฟใช่คนนอกหลักสูตรฉันได้พูดถึงคำตอบในโพสต์ของฉันแล้ว! ฉันนำไฟล์รูปร่างเปิดไปยังโครงการ qgis และเปลี่ยนการเข้ารหัสผ่านบันทึกเป็น แต่เมื่อฉันเปิดอีกครั้งมันจะเปลี่ยนเป็นระบบ (ไม่เปลี่ยนแปลง)
มูฮัมหมัด Faizan Khan

@ โจเซฟฉันไม่ได้บันทึกโครงการ qgis เมื่อฉันบันทึกโครงการ qgis และเปิดไฟล์รูปร่างผ่านมันก็ทำงานได้อย่างถูกต้อง!
มูฮัมหมัด Faizan Khan

คำตอบ:


13

จากแถบเมนูไปที่:

Settings > Options > Data Sources > Data source handling

และยกเลิกการเลือกการตั้งค่าการประกาศการเข้ารหัสการละเว้นรูปแบบไฟล์ :

การตั้งค่าการเข้ารหัส

ชุดนี้จะทำการโหลดเลเยอร์ทั้งหมดลงใน QGIS เป็นค่าเริ่มต้น UTF-8


1
ขอบคุณ @Joseph นอกจากนี้สำหรับผู้ใช้ในอนาคตการเชื่อมโยงนี้ยังเป็นประโยชน์hub.qgis.org/issues/13203 ละเว้นการเลือกการตรวจสอบการประกาศการเข้ารหัสรูปร่างไฟล์จริงละเว้นการตั้งค่า utf-8 ละเว้นไฟล์. cpg
มูฮัมหมัด Faizan Khan

@MohammadFaizanKhan - ยินดีต้อนรับมากที่สุดและขอขอบคุณสำหรับการเชื่อมโยง :)
โจเซฟ

7

ในการสรุปตำแหน่งที่แตกต่างกันซึ่งคุณสามารถตั้งค่าการเข้ารหัสได้:

เมื่อคุณเปิด shapefile: เปิด shp เป็น

เมื่อคุณเปิด CSV: เพิ่ม CSV

เมื่อคุณบันทึกไฟล์เวกเตอร์: บันทึกไฟล์เวคเตอร์เป็น

ในคุณสมบัติเลเยอร์:
คุณสมบัติเลเยอร์

และตามที่กล่าวถึงโดย @Joseph คุณควรยกเลิกการเลือกการตั้งค่าการประกาศการเข้ารหัสการละเว้นรูปร่างไฟล์


ขอบคุณผู้ชนะบรรทัดสุดท้ายของคุณช่วยฉันได้มาก hub.qgis.org/issues/13203
Muhammad Faizan Khan

3

เมื่อคุณใช้คุณต้องเลือกชื่อไฟล์ที่แตกต่างกันและSave As ...Add file to canvas

ดังนั้นคุณต้องบันทึกโครงการด้วยเพื่อรับไฟล์รูปร่างใหม่ในนั้น โปรเจ็กต์ที่ไม่ได้บันทึกยังรวมถึง shapefile ที่ไม่ถูกแตะต้องและการเข้ารหัสผิด

BTW the Data encodingin the Layer properties เป็นส่วนหนึ่งของไฟล์โครงการไม่ใช่ shapefile ตัวอย่างรหัสของคุณไม่ได้เขียนอะไรเลยใน shapefile มันจะเปลี่ยนเฉพาะการตั้งค่าเลเยอร์ของโครงการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.