มีชุดไฟล์“ Lorem ipsums” สำหรับทดสอบปัญหาการเข้ารหัสอักขระหรือไม่


85

สำหรับการจัดวางเรามีข้อความ "Lorem ipsum" ที่มีชื่อเสียงเพื่อทดสอบว่ามีลักษณะอย่างไร

สิ่งที่ฉันกำลังมองหาคือชุดไฟล์ที่มีข้อความที่เข้ารหัสด้วยการเข้ารหัสต่างๆที่ฉันสามารถใช้ในการทดสอบ JUnit เพื่อทดสอบวิธีการบางอย่างที่จัดการกับการเข้ารหัสอักขระเมื่ออ่านไฟล์ข้อความ

ตัวอย่าง:

มีISO 8859-1ไฟล์Windows-1252ทดสอบที่เข้ารหัสและไฟล์ทดสอบที่เข้ารหัส ของ Windows 1252 จะเรียกความแตกต่างในภูมิภาค 80 16 - 9F 16 กล่าวอีกนัยหนึ่งคือต้องมีอักขระอย่างน้อยหนึ่งตัวของภูมิภาคนี้เพื่อแยกความแตกต่างจาก ISO 8859-1

ชุดไฟล์ทดสอบที่ดีที่สุดอาจเป็นที่ที่ไฟล์ทดสอบสำหรับการเข้ารหัสแต่ละรายการมีอักขระทั้งหมดเพียงครั้งเดียว แต่บางทีฉันอาจไม่รู้ถึง sth - เราทุกคนชอบสิ่งที่เข้ารหัสนี้ใช่มั้ย? :-)

มีชุดไฟล์ทดสอบสำหรับปัญหาการเข้ารหัสอักขระหรือไม่?


1
+1: ฉันใช้เวลาเพียงเล็กน้อยในการติดตั้งตัวถอดรหัส UTF-8 การจัดการกับทุกกรณีจำเป็นต้องมีการทดสอบหน่วยมากกว่าที่คุณคิด
Raedwald

4
"ข้อความที่เข้ารหัสด้วยการเข้ารหัสที่แตกต่างกัน": เพื่อความครอบคลุมที่ดีคุณยังต้องการลำดับไบต์ตัวอย่างที่มีไบต์ที่ไม่ถูกต้อง ตามหน้าวิกิพีเดีย UTF-8 การจัดการกรณีเหล่านี้อย่างไม่ถูกต้องทำให้เกิดช่องโหว่ด้านความปลอดภัยในผลิตภัณฑ์ระดับสูงบางผลิตภัณฑ์
Raedwald

@Raedwald แน่นอนว่าเป็นจุดที่ดี ฉันไม่ทราบเรื่องนี้ ในความคิดของฉันมีเหตุผลอีกประการหนึ่งสำหรับชุดทดสอบสำหรับผู้ใหญ่สำหรับปัญหาการเข้ารหัส ไม่จำเป็นต้องเป็นชุดไฟล์ นอกจากนี้ยังสามารถเป็นไลบรารีที่ให้ข้อมูลการทดสอบที่สามารถใช้ในการทดสอบ JUnit ตัวอย่างเช่นสามารถจัดเตรียมลำดับไบต์วิกฤต / ไม่ถูกต้องสำหรับชุดอักขระทั่วไปและสตริงอ้างอิงสำหรับการเปรียบเทียบหลังจากถอดรหัสลำดับไบต์ตัวอย่าง เพียงแค่คิดบางอย่างและฉันก็สงสัยว่าสิ่งที่เข้ารหัสนี้ได้รับการทดสอบใน libs ทั้งหมดรอบตัวอย่างไร ...
Fabian Barney

คำตอบ:


26

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


+1 รายการโปรดของฉันจนถึงตอนนี้ ฉันอ่านในเอกสารเป็นเวลา 1 ชั่วโมงและดูเหมือนว่าจะให้ทุกอย่างที่ฉันต้องการ - อย่างน้อยสำหรับสิ่งที่เกี่ยวข้องกับ Unicode
Fabian Barney

ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุดจริงๆ ฉันยอมรับมันและหวังว่าคุณจะมีชื่อเสียงในเรื่องนี้ หากได้รับคำตอบหนึ่งสัปดาห์ก่อนหน้านี้ฉันแน่ใจว่าจะได้คะแนนดีกว่ามากเมื่อเทียบกับคำตอบอื่น ๆ ที่นี่ ยังไงก็ขอบคุณ!
Fabian Barney

42

บทความ Wikipedia เกี่ยวกับการกำกับเสียงนั้นค่อนข้างครอบคลุมน่าเสียดายที่คุณต้องแยกอักขระเหล่านี้ด้วยตนเอง นอกจากนี้ยังอาจมีตัวช่วยจำบางอย่างสำหรับแต่ละภาษา ตัวอย่างเช่นในภาษาโปแลนด์เราใช้:

Zażółćgęśląjaźń

ซึ่งมีตัวกำกับภาษาโปแลนด์ทั้ง 9 ตัวในประโยคเดียวที่ถูกต้อง คำใบ้ในการค้นหาที่มีประโยชน์อีกอย่างคือpangrams : ประโยคที่ใช้ตัวอักษรทุกตัวอย่างน้อยหนึ่งครั้ง :

  • ในภาษาสเปน " El veloz murciélagohindúcomía feliz cardillo y kiwi La cigüeña tocaba el saxofóndetrás del palenque de paja. " (ตัวอักษรและการกำกับเสียงทั้งหมด 27 ตัว)

  • ในภาษารัสเซีย " Съешьжеещёэтихмягкихфранцузскихбулок, давыпейчаю " (อักษรซิริลลิกรัสเซียทั้งหมด 33 ตัว)

รายชื่อ pangramsมีข้อมูลสรุปโดยละเอียด ทุกคนสนใจที่จะห่อสิ่งนี้ด้วยวิธีง่ายๆ:

public interface NationalCharacters {
  String spanish();
  String russian();
  //...
}

ห้องสมุด?


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

8

ฉันไม่รู้เอกสารข้อความที่สมบูรณ์ แต่ถ้าคุณสามารถเริ่มต้นด้วยภาพรวมง่ายๆของชุดอักขระทั้งหมดมีไฟล์บางไฟล์อยู่ที่เซิร์ฟเวอร์ ftp.unicode.org

นี่คือตัวอย่าง WINDOWS-1252 คอลัมน์แรกคือค่าอักขระเลขฐานสิบหกและค่าที่สองคือค่ายูนิโคด

ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT


+1 ขอบคุณสำหรับความพยายามของคุณ ทรัพยากรไฟล์ที่น่าสนใจมาก
Fabian Barney

1

ฉันได้ใช้เครื่องมือออนไลน์เพื่อสร้างชุดอักขระข้อความจาก Lorem Ipsum ฉันเชื่อว่ามันช่วยคุณได้ ฉันไม่มีชุดที่มีชุดอักขระที่แตกต่างกันทั้งหมดในหน้าเดียว

http://generator.lorem-ipsum.info /


4
Lorem ipsumประกอบด้วยอักขระละตินเท่านั้นเนื่องจากเป็นภาษาละติน นี่ไม่ใช่สิ่งที่ถูกถามที่นี่ BTW: repo1.maven.org/maven2/org/codeswarm/lipsum/1.0
Tomasz Nurkiewicz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.