ไทย

เครื่องมือสำหรับนักพัฒนา · ตัวแปลงไวยากรณ์

มาตรฐานที่ขาดหายไปของ CSV: สิ่งที่ RFC 4180 ครอบคลุม และสิ่งที่เปิดทิ้งไว้

· พื้นหลัง

csv json ข้อมูลรูปแบบ

CSV ช่องที่มีเครื่องหมายจุลภาค เครื่องหมายคำพูดสองเท่า และบันทึก CRLF ที่ปล่อยออกมาจาก JSON แถว
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

CSV เกิดขึ้นก่อนข้อกำหนดใดๆ และอันที่ RFC ที่อธิบายว่าเป็นข้อมูลและจงใจจำกัดให้แคบลง โพสต์นี้อธิบายสิ่งที่ RFC 4180 กำหนด สิ่งที่ไม่ได้กล่าวถึง และเหตุใดการแปลง CSV จึงเป็นการเจรจาเสมอ

CSV ของใครถูกต้อง — การส่งออกตารางเดียวกันสองครั้ง รายการหนึ่งมีเครื่องหมายอัฒภาคและอีกรายการหนึ่งมีเครื่องหมายจุลภาค ทั้งคู่เรียกว่า CSV

ToolAcre สามารถปล่อยเอาต์พุตด้วยเครื่องหมายจุลภาค อัฒภาค หรือคั่นด้วยแท็บจาก JSON ไม่ได้อ่านการส่งออก CSV ที่แข่งขันกันสองรายการ หรือประกาศว่ารายการใดรายการหนึ่งถูกต้อง CSV เขียนได้อย่างเดียวที่นี่ ดังนั้นตัวเลือกตัวคั่นจึงเป็นตัวเลือกเอาต์พุตที่ชัดเจน แทนที่จะเป็นอัลกอริธึมการตรวจจับ

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

ตัวเลือกตัวคั่นสองตัวคือตัวเลือกเอาต์พุต ไม่ใช่หลักฐานว่าแผงนี้อ่านไฟล์ใดไฟล์หนึ่ง

พื้นที่เก็บข้อมูลไม่มีแหล่งที่มาสำหรับสเปรดชีตหรือประวัติฐานข้อมูลในยุคแรกๆ ดังนั้นบทความจึงไม่ได้จัดทำลำดับเหตุการณ์ เริ่มต้นด้วยตัวเขียนปัจจุบันและการทดสอบ: เร็กคอร์ด ฟิลด์ ตัวคั่น การยกเลิก CRLF และการหลีกเครื่องหมายคำพูด

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

CSV ประวัติก่อน RFC 4180 เป็นหลักฐานนอกพื้นที่เก็บข้อมูล

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

ลักษณะการทำงานเหล่านี้เป็นไปตามกฎสไตล์ RFC 4180 ที่ทดสอบในที่เก็บ บทความนี้หลีกเลี่ยงการอ้างสิทธิ์ในการปฏิบัติตามข้อกำหนดสากล เนื่องจากผู้เขียนยังสนับสนุนตัวคั่นอื่น และเพิ่มการจัดการความปลอดภัยนอกเหนือจากไวยากรณ์ที่แคบ

ผู้เขียนใช้คำพูดแบบ RFC 4180 และ CRLF โดยไม่อ้างสิทธิ์ในการปฏิบัติตามมาตรฐานเต็มรูปแบบ

เซลล์ CSV จะไม่รักษาประเภท JSON สตริงว่างและสตริงว่างจะกลายเป็นเซลล์ว่าง ในขณะที่บูลีนและตัวเลขกลายเป็นการแสดงข้อความ เนื้อหา UTF-8 ถูกส่งผ่าน และสามารถใส่คำนำหน้า BOM เพิ่มเติมได้สำหรับลูกค้าที่ต้องการ

การตีความสถานที่ไม่ได้ฝังอยู่ ตัวคั่นอัฒภาคสามารถอยู่ร่วมกับเครื่องหมายจุลภาคทศนิยมได้ แต่ผู้เขียนไม่ได้จัดรูปแบบตัวเลขใหม่ตามภาษาหรือเข้ารหัสประเภทวันที่ แอปพลิเคชันที่ได้รับยังคงตัดสินใจว่าจะตีความแต่ละฟิลด์อย่างไร

ขอบเขตการเข้ารหัส ประเภท และภาษายังคงชัดเจนในตัวเขียนนี้

รูปแบบที่นำไปใช้ได้แก่ จุลภาค อัฒภาค และแท็บ บวกด้วย BOM ที่ไม่บังคับ ข้อความคล้ายสูตรที่ขึ้นต้นด้วย `=`, `+`, `-`, `@` การขึ้นบรรทัดใหม่แบบแท็บหรือการขึ้นบรรทัดใหม่จะนำหน้าด้วยเครื่องหมายอะพอสทรอฟีตามค่าเริ่มต้น ดังนั้นสเปรดชีตจึงถือเป็นข้อความ ผู้ใช้สามารถปิดใช้งานการป้องกันดังกล่าวและรับคำเตือนได้

ไม่มี `sep=` คำใบ้หรือโหมดการหลีกแบ็กสแลชในตัวเขียนนี้ การกล่าวถึงสิ่งเหล่านั้นว่าเป็นตัวเลือกที่จัดส่งจะเป็นเท็จ เครื่องหมายคำพูดแบบฝังใช้การสองเท่า เหมือนกับที่การทดสอบยืนยัน

รูปแบบสเปรดชีตที่สังเกตได้จำกัดอยู่ที่ตัวเลือกและการป้องกันที่นำมาใช้ที่นี่

ทุกสมมติฐานในเส้นทางนี้เริ่มต้นจากการแยกวิเคราะห์ JSON: ค่าใดที่จัดหาแถว วิธีซ้อนคอลัมน์แบบประ และคีย์ใดที่กลายเป็นส่วนหัว ไม่มีการตั้งสมมติฐานเกี่ยวกับภาษาถิ่น CSV ขาเข้า เนื่องจาก CSV ขาเข้าถูกปฏิเสธ

การแก้ไขนี้จะกลับทิศทางที่ร้องขอของสมุดงาน เวิร์กโฟลว์ CSV-to-JSON ต้องเลือกตัวคั่น การอ้างอิง ส่วนหัว และประเภทเซลล์ในเครื่องมืออื่น ข้อผิดพลาดของ ToolAcre อธิบายถึงการปฏิเสธนั้น แทนที่จะคาดเดาอย่างเงียบๆ

สมมติฐานการแปลงใช้กับ JSON-to-CSV เท่านั้น เนื่องจากอินพุต CSV ถูกปฏิเสธ

การซ่อมแซม CSV ที่มีรูปแบบไม่ถูกต้องอยู่นอกขอบเขต เครื่องหมายคำพูดที่ใช้งานไม่ได้ การเข้ารหัสแบบผสม และตัวคั่นโดยไม่ตั้งใจจำเป็นต้องมี CSV Cleaner หรือตัวแยกวิเคราะห์อื่นที่มีการวินิจฉัยที่ชัดเจน ตัวแปลงไวยากรณ์ได้รับข้อความ JSON ที่เข้มงวด ไม่เสียหาย CSV

เอาต์พุตยังคงไม่เหมาะสมสำหรับเป้าหมายเมื่อต้นไม้ที่ซ้อนกันสร้างคอลัมน์ที่มีจุดคลุมเครือหรือเกิน 2,000 คอลัมน์ คำเตือนและตัวพิมพ์ใหญ่เผยให้เห็นความล้มเหลวของรูปแบบตารางก่อนที่จะดาวน์โหลด

ประเด็นสำคัญ: CSV เป็นแบบแผน ไม่ใช่รูปแบบ - และวิธีที่แผงตัวแปลงไวยากรณ์เปลี่ยนไฟล์ที่มีรูปแบบถูกต้องเป็น JSON คุณสามารถตรวจสอบได้

ถือว่า CSV เป็นแบบแผนที่ต้องมองเห็นตัวเลือกต่างๆ ToolAcre บันทึกตัวเลือกเอาต์พุตและปฏิเสธการย้อนกลับที่ระบุต่ำกว่าที่ระบุ ซึ่งเชื่อถือได้มากกว่าการใช้ปุ่มเดียวสำหรับงานสองงานที่แตกต่างกันโดยพื้นฐาน

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

การตรวจสอบการยอมรับในทางปฏิบัติจะเปิดไฟล์ที่สร้างขึ้นในผู้บริโภคที่ต้องการและตรวจสอบไบต์หรือข้อความดิบด้วย มุมมองของผู้บริโภคพบปัญหาการแสดงผลและการนำเข้า มุมมองดิบยืนยันตัวคั่น เครื่องหมายคำพูดสองเท่า CRLF และตัวเลือก BOM โดยไม่มีการตีความสเปรดชีตใหม่ ทดสอบสตริงที่เหมือนสูตรเป็นข้อความเฉื่อยและจำนวนลบเป็นตัวเลข เช็คที่จับคู่เหล่านั้นจะตรวจสอบสัญญาที่แท้จริงของผู้เขียนโดยไม่อ้างว่าทุกโปรแกรมใช้แบบแผน CSV เหมือนกัน