UTF-8 จะสามารถรองรับภาษาต่างประเทศที่มีตัวละครใหม่นับล้านตัวได้หรือไม่?


86

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

(แน่นอนเราไม่ทราบว่ามนุษย์ต่างดาวมีภาษาจริง ๆ มีวิธีสื่อสารกันหรือไม่ แต่เพื่อการโต้แย้งโปรดลองจินตนาการว่าพวกเขาทำ)

ตัวอย่างเช่นหากภาษาของพวกเขาประกอบด้วยร่ายมนตร์ที่ค้นพบใหม่สัญลักษณ์และ / หรือการรวมตัวอักษร UTF-8 ในทางทฤษฎีสามารถขยายได้ในลักษณะที่ไม่แตกหักเพื่อรวมร่ายมนตร์ใหม่เหล่านี้และยังรองรับซอฟต์แวร์ที่มีอยู่ทั้งหมดหรือไม่

ฉันสนใจมากขึ้นถ้าร่ายมนตร์ไกลเกินขีด จำกัด ขนาดปัจจุบันและต้องการไบต์เพิ่มขึ้นเพื่อแทนร่ายมนตร์เดียว ในกรณีที่ไม่สามารถขยายUTF-8 ได้หรือไม่นั่นพิสูจน์ได้ว่าข้อได้เปรียบเดียวของ UTF-32 นั้นคือขนาดของตัวอักษรที่ต่ำกว่าหรือไม่?


16
"สนับสนุนภาษาของพวกเขา" (ความสำคัญของฉัน) ... กี่คน? เราแน่ใจว่าภาษาสามารถแบ่งย่อยเป็นอักขระได้หรือไม่ บางทีภาษานั้นขึ้นอยู่กับความสัมพันธ์เชิงพื้นที่ - ดูเท็ดเจียง "เรื่องราวของชีวิตของคุณ" เรื่องราวของชีวิตและอื่น ๆ ของคุณ ที่ดีที่สุดนี่เป็นเพียงคำถาม max-Things-in-X-bytes (นอกหัวข้อ) ที่เลวร้ายที่สุดมันไร้สาระเก็งกำไร (ไม่ชัดเจนสิ่งที่คุณขอ)
ขาดแคลนโรเจอร์

6
@ScantRoger คำตอบที่ยอมรับนั้นใช้งานได้ดีในการตอบคำถามตามที่ตั้งใจไว้
Qix

11
คำตอบที่ยอมรับนั้นเป็นงานที่ดีในการบอกข้อเท็จจริงของ UTF-8, UTF-16 และ UTF-32 คุณสามารถค้นหาได้จาก Wikipedia สำหรับ "การบุกรุกของมนุษย์ต่างดาว" ฉันไม่เห็นว่าคำตอบจะอยู่ที่ใด
Scant Roger


9
Unicode ไม่รองรับภาษารองรับอักขระ - ร่ายมนตร์ที่ใช้เพื่อแสดงความหมายในรูปแบบที่เป็นลายลักษณ์อักษร ภาษามนุษย์จำนวนมากไม่มีสคริปต์และดังนั้นจึงไม่สามารถรองรับโดย Unicode ไม่พูดถึงสัตว์หลายชนิดสื่อสาร แต่ไม่มีภาษาเขียน การสื่อสารด้วยภาพประกอบพูดหรือการ์ตูนไร้สาระไม่สามารถรองรับได้โดย Unicode เนื่องจากชุดของร่ายมนตร์ไม่ได้ จำกัด ตามคำจำกัดความเราไม่รู้ว่ามนุษย์ต่างดาวสื่อสารกันอย่างไรดังนั้นคำถามของคุณจึงไม่สามารถตอบได้ ถ้าคุณเพียงต้องการที่จะทราบว่าจำนวนตัวอักษรที่แตกต่างกันสามารถรองรับ Unicode คุณอาจจะชี้แจง :)
JacquesB

คำตอบ:


109

มาตรฐาน Unicode มีพื้นที่เหลือเฟือมากมาย codepoints Unicode จัดอยู่ใน "ระนาบ" และ "บล็อก" จากจำนวนเครื่องบินทั้งหมด 17 ลำปัจจุบันยังไม่ได้กำหนด 11รายการ เครื่องบินแต่ละลำมีตัวอักษร 65,536 ตัวดังนั้นจึงมีรหัส codepoints ครึ่งล้านสำหรับภาษาต่างประเทศ (ยกเว้นว่าเราเติมอีโมจิทั้งหมดก่อนที่จะทำการติดต่อครั้งแรก) ในฐานะของ Unicode 8.0 มีเพียง 120,737 รหัสคะแนนเท่านั้นที่ได้รับมอบหมายทั้งหมด (ประมาณ 10% ของความจุทั้งหมด) โดยประมาณว่าเป็นจำนวนเดียวกันกับที่ไม่ได้ถูกมอบหมาย แต่สงวนไว้สำหรับการใช้งานเฉพาะส่วนบุคคล โดยรวมแล้ว 974,530 codepoints ยังไม่ได้ถูกมอบหมาย

UTF-8 เป็นการเข้ารหัสเฉพาะของ Unicode และปัจจุบันถูก จำกัด ไว้ที่สี่ octets (ไบต์) ต่อจุดโค้ดซึ่งตรงกับข้อ จำกัด ของ UTF-16 โดยเฉพาะอย่างยิ่ง UTF-16 รองรับ 17 เครื่องบินเท่านั้น ก่อนหน้านี้ UTF-8 รองรับ 6 octets ต่อ codepoint และถูกออกแบบมาเพื่อรองรับเครื่องบิน 32768 โดยหลักการแล้วข้อ จำกัด 4 ไบต์นี้สามารถยกขึ้นได้ แต่นั่นจะทำลายโครงสร้างองค์กรปัจจุบันของ Unicode และต้องการให้ UTF-16 เลิกใช้งาน - ไม่น่าจะเกิดขึ้นในอนาคตอันใกล้นี้โดยพิจารณาว่ามันยึดมั่นในระบบปฏิบัติการและการเขียนโปรแกรมอย่างไรบ้าง ภาษา

เหตุผลเดียวที่ทำให้ UTF-16 ยังคงใช้งานได้ทั่วไปคือมันเป็นส่วนขยายของการเข้ารหัส UCS-2 ที่มีข้อบกพร่องซึ่งรองรับเฉพาะ Unicode เครื่องบินเดียวเท่านั้น มิฉะนั้นจะสืบทอดคุณสมบัติที่ไม่พึงประสงค์จากทั้ง UTF-8 (ไม่ใช่ความกว้างคงที่) และ UTF-32 (ไม่ใช่ ASCII ที่เข้ากันได้, เสียพื้นที่สำหรับข้อมูลทั่วไป) และต้องมีเครื่องหมายลำดับไบต์เพื่อประกาศ endianness ระบุว่าแม้ปัญหาเหล่านี้ UTF-16 ยังเป็นที่นิยม แต่ฉันก็ไม่ได้มองโลกในแง่ดีเกินไปว่าจะมีการเปลี่ยนแปลงด้วยตัวเองในไม่ช้า หวังว่าเจ้านายคนต่างด้าวใหม่ของเราจะเห็นอุปสรรคนี้กฎของพวกเขาและในภูมิปัญญาของพวกเขาขับไล่ UTF-16 จากใบหน้าของแผ่นดิน


7
ที่จริงแล้ว UTF-8 ถูก จำกัด เพียงส่วนหนึ่งของแม้แต่ขีด จำกัด 4 ไบต์เพื่อให้ตรงกับ UTF-16 โดยเฉพาะถึง 17/32 ของมันมากกว่าครึ่งหนึ่งเล็กน้อย
Deduplicator

5
นอก Windows ฉันรู้ว่าไม่มี OS อื่นใดที่ใช้ทั้ง OS หรือโปรแกรมส่วนใหญ่ใน OS ใช้ UTF16 โปรแกรม OSX โดยทั่วไปคือ UTF8 โดยปกติแล้วโปรแกรม Android โดยทั่วไปจะเป็น UTF8, Linux มักจะเป็น UTF8 ดังนั้นสิ่งที่เราต้องมีก็คือ Windows จะต้องตาย (มันตายไปแล้วในพื้นที่มือถือ)
slebetman

23
เว้นเสียแต่ว่าเราจะเติมอิโมจิที่มีทั้งหมดก่อนที่จะทำการติดต่อครั้งแรก ... คุณมีมัน ภัยคุกคามที่สำคัญที่สุดต่อการมีปฏิสัมพันธ์อย่างสันติกับเอเลี่ยนคืออิโมจิ พวกเราถึงวาระแล้ว
rickster

13
@slebetman ไม่จริง สิ่งใดก็ตามที่ใช้ JVM นั้นใช้ UTF-16 (เช่น Android, ไม่แน่ใจว่าทำไมคุณถึงบอกว่าไม่เป็นเช่นนั้น), JavaScript ใช้ UTF-16 และเนื่องจาก Java และ JavaScript เป็นภาษาที่ได้รับความนิยมมากที่สุด UTF-16 จะไม่ไปไหน ในไม่ช้า
Malcolm

5
@ Kaiserludi "โค้ด linux ส่วนใหญ่ใช้ UTF32 สำหรับ unicode" ใช่ไม่ใช่ คุณได้แนวคิดนี้มาจากไหน ไม่มีแม้แต่wfopen ตึกระฟ้าหรืออะไรอย่างอื่นมันคือ UTF8 ไปตลอดทาง Hell แม้แต่ Python และ Java - ซึ่งกำหนดสตริงเป็น UTF-16 เนื่องจากเหตุผลทางประวัติศาสตร์ - อย่าเก็บสตริงเป็น UTF-16 ยกเว้นเมื่อจำเป็น .. หน่วยความจำขนาดใหญ่มีประโยชน์และไม่มีประสิทธิภาพในการทำงาน (และแม้ว่าจะมีรหัสเพิ่มเติมสำหรับจัดการ Conversion) หน่วยความจำแพงซีพียูราคาถูก) Same ไปสำหรับ Android - JString ของ NDK เป็น UTF8 ส่วนใหญ่เป็นเพราะวิศวกรของ Google ไม่ได้บ้า
Voo

30

หากขยาย UTF-8 ได้จริงเราควรดูค่าสูงสุดที่แน่นอนที่สามารถเป็นตัวแทนได้ UTF-8 มีโครงสร้างดังนี้:

Char. number range  |        UTF-8 octet sequence
   (hexadecimal)    |              (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

(คัดลอกมาจาก RFCอย่างไร้ยางอาย) เราเห็นว่าไบต์แรกจะควบคุมจำนวนไบต์ที่ตามมาที่ประกอบขึ้นเป็นอักขระปัจจุบันเสมอ

หากเราขยายให้มีขนาดสูงสุด 8 ไบต์เราจะได้รับการแทนค่าที่ไม่ใช่ Unicode เพิ่มเติม

111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
11111110 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
11111111 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

การคำนวณการแทนค่าสูงสุดที่เป็นไปได้ที่เทคนิคนี้อนุญาตให้เราทำได้

  10000000₂
+ 00100000₂ * 01000000₂
+ 00010000₂ * 01000000₂^2
+ 00001000₂ * 01000000₂^3
+ 00000100₂ * 01000000₂^4
+ 00000010₂ * 01000000₂^5
+ 00000001₂ * 01000000₂^6
+ 00000001₂ * 01000000₂^7

หรือในฐาน 10:

  128
+  32 * 64
+  16 * 64^2
+   8 * 64^3
+   4 * 64^4
+   2 * 64^5
+   1 * 64^6
+   1 * 64^7

ซึ่งให้จำนวนสูงสุดของการเป็นตัวแทนของเราเป็น 4,468,982,745,216

ดังนั้นหากตัวละคร4 พันล้าน ( หรือล้านล้านตามที่คุณต้องการ ) เพียงพอที่จะเป็นตัวแทนของภาษาต่างประเทศฉันค่อนข้างมั่นใจว่าเราสามารถทำได้โดยใช้ความพยายามเพียงเล็กน้อยขยาย UTF-8 ปัจจุบันเพื่อเอาใจคนต่างด้าวคนใหม่ของเรา ;-)


8
ปัจจุบัน UTF-8 ถูก จำกัด ให้ใช้เฉพาะจุดรหัสจนถึง 0x10FFFF - แต่นั่นเป็นเพียงความเข้ากันได้กับ UTF-16 เท่านั้น หากมีความต้องการที่จะขยายมันไม่มีความกำกวมเกี่ยวกับวิธีการขยายด้วยคะแนนรหัสจนถึง 0x7FFFFFFF (นั่นคือ2³¹-1) แต่นอกเหนือจากนั้นฉันได้เห็นคำจำกัดความที่ขัดแย้งกัน คำจำกัดความที่ฉันได้เห็นมี111111xxความเป็นไปได้ไบต์แรกตามด้วยส่วนขยายห้าไบต์สำหรับจุดโค้ดสูงสุด2³² แต่นั่นเข้ากันได้กับคำจำกัดความที่คุณกล่าวถึงสำหรับจุดโค้ด2³¹แรกเท่านั้น
kasperd

2
ใช่Wikipediaบอกบางอย่างเกี่ยวกับ UTF-16 เมื่อจริง ๆ แล้วพวกเขาหมายถึง Unicode หรือ ISO 10646 (ขึ้นอยู่กับบริบท) ที่จริงแล้วเนื่องจาก RFC 3629, UTF-8 ไม่ได้ถูกกำหนดเกิน U + 10FFFF (หรือF4 8F BF BFใน UTF-8 ไบต์) ทุกอย่างที่ฉันพูดถึงที่นี่เกินกว่านั้นคือการเก็งกำไรที่บริสุทธิ์ แน่นอนว่าบางคนอาจนึกถึงส่วนขยายอื่น ๆ ซึ่งไบต์แรกที่สูงหมายถึงโครงสร้างอื่น ๆ ที่ตามมา (และหวังว่าจะไม่ทำลายการซิงค์ตัวเองในกระบวนการ) ฉันพยายามทำโครงร่างไบต์ให้ใกล้เคียงกับ UTF-8 ที่แท้จริงเท่าที่จะเป็นไปได้
Boldewyn

4
นั่นคือ 4 ล้านล้านไม่ใช่สี่ล้าน
Ypnypn

1
ไม่จำเป็นอย่างเคร่งครัดว่าจำนวนไบต์ต่อไปนี้จะน้อยกว่าจำนวนของจำนวนไบต์ที่นำหน้าในไบต์แรกเสมอ Perl สนับสนุนจริง (ตั้งแต่ปี 2000) ตัวแปรภายในของ UTF-8 โดยที่รูปแบบไบต์ 5, 6 และ 7 นั้นเหมือนกับคำตอบนี้ แต่FFแนะนำหน่วยรหัส 13 ไบต์ที่สามารถเก็บ 72 บิตได้ อะไรก็ตามที่มีขนาด 2 ^ 36 จะมีราคาสูงมากเหมือนกันแต่ก็สามารถเข้ารหัส int แบบ 64 บิตได้บ้าง
ฮอบส์

7

RFC3629จำกัด UTF-8 สูงสุดสี่ไบต์ต่อตัวอักษรโดยมีค่าสูงสุด 0x10FFFF ซึ่งอนุญาตให้ใช้จุดรหัสสูงสุด 1,112,064 เห็นได้ชัดว่าข้อ จำกัด นี้สามารถลบออกและขยายมาตรฐานได้ แต่สิ่งนี้จะพิสูจน์ได้ว่าการเปลี่ยนแปลงที่เกิดขึ้นกับโค้ดที่มีอยู่ซึ่งทำงานได้ถึงขีด จำกัด นั้น

จากมุมมอง data-file สิ่งนี้จะไม่เป็นการเปลี่ยนแปลงที่ผิดปกติเนื่องจากมาตรฐานทำงานบนพื้นฐานที่ว่าหากบิตที่สำคัญที่สุด (MSB) ของแต่ละไบต์ถูกตั้งค่าไบต์ต่อไปจะเป็นส่วนหนึ่งของการเข้ารหัส แม้แต่ก่อน RFC3629 มาตรฐานก็ถูก จำกัด ที่ 31 บิตทำให้ MSB ของไบต์ที่สี่ไม่ได้ตั้งค่า

การขยายมาตรฐานเกินกว่า 0x10FFFF จะทำให้ความเข้ากันได้ของข้อมูลบางส่วนของ UTF-8 กับ UTF-16 นั้นลดลง


5
ดังนั้นในทางทฤษฎีข้อมูลจะเข้ากันได้ย้อนหลัง แต่รหัสจะไม่เข้ากันได้กับการปรับเปลี่ยนมาตรฐานโดยเนื้อแท้?
Qix

2
@Qix นั่นเป็นจุดที่ถูกต้อง ไฟล์ UTF-8 ใด ๆ ที่มีอยู่จะเข้ากันได้กับธรรมชาติเช่นสูงสุด 6 ไบต์เพื่อรองรับจุดรหัสมากกว่าล้านจุด แต่ไลบรารีที่มีอยู่จำนวนมากที่ออกแบบมาเพื่อจัดการ UTF-8 นั้นไม่น่าจะจัดการกับส่วนขยายนั้นได้
David Arno

4
UTF-16 น่าจะทำลายได้ มันสามารถสนับสนุนรหัสจุดได้ถึง 0x10FFFF เท่านั้น
gnasher729

1
@ gnasher729: ไม่เป็นปัญหาใหญ่อย่างที่คุณคิด Pre-Unicode สามารถแก้ไขได้ด้วยการเปลี่ยนค่า (Shift JIS สำหรับภาษาญี่ปุ่น) พวกเขาต้องการทำเครื่องหมายอักขระที่สงวนไว้ / ไม่ได้ใช้ (0xFFFD?) เป็น "อักขระกะ" ซึ่งเปลี่ยนการเข้ารหัสเป็นแบบขยายเพิ่มเติม อาจเป็น UTF32
Mooing Duck

4

จริงๆแล้วมีเพียงโค้ด Unicode code-points 2 รหัสเท่านั้นที่ใช้สำหรับร่ายมนตร์จำนวนมากอย่างไม่ จำกัด หากพวกเขากำลังรวมตัวอักขระ

เปรียบเทียบตัวอย่างเช่นสองวิธีที่ Unicode ถอดรหัสอักษรเกาหลีฮันกึล: อังกูลพยางค์และอังกูล Jamo อักขระ웃 in Hangul Syllabelsเป็นจุดรหัสเดียวC6C3ในขณะที่Hangul Jamoมันคือสามจุดรหัส110B(ㅇ) 116E(ㅜ) 11B9(ㅅ) เห็นได้ชัดว่าการใช้อักขระที่รวมกันนั้นใช้รหัสจุดน้อยลงอย่างมาก แต่มีประสิทธิภาพน้อยกว่าสำหรับการเขียนเนื่องจากจำเป็นต้องใช้ไบต์มากขึ้นในการเขียนอักขระแต่ละตัว

ด้วยเคล็ดลับนี้ไม่จำเป็นต้องไปเกินจำนวนรหัสจุดที่สามารถเข้ารหัสในปัจจุบันใน UTF-8 หรือ UTF-16

ฉันเดาว่ามันเป็นเรื่องเกี่ยวกับมนุษย์ต่างดาวที่น่ารังเกียจถ้าภาษาของพวกเขาเกิดขึ้นต้องใช้จำนวนไบต์ต่อข้อความมากกว่าภาษาทางโลก หากพวกเขาไม่เป็นไรพูดแทนตัวละครแต่ละล้านตัวโดยใช้ความสับสน 100 พันตัวอักษรแล้วไม่มีปัญหา ในทางตรงกันข้ามถ้าถูกบังคับให้ใช้ไบต์มากกว่า Earthlings ทำให้พวกเขารู้สึกเหมือนพลเมืองชั้นสองเราอาจจะอยู่ในความขัดแย้งบางอย่าง ( ไม่แตกต่างจากสิ่งที่เรามีอยู่แล้วสังเกตกับ UTF-8 )


นี่เป็นกรณีเฉพาะถ้าตัวละครในภาษาต่างประเทศประกอบขึ้นด้วยชุดของกราฟที่ จำกัด มากขึ้น นี่อาจไม่เป็นอย่างนั้น
JacquesB

1
เท่าที่ฉันทราบไม่มีข้อกำหนดที่การรวมอักขระต้องเกี่ยวข้องกับกราฟแต่ละตัว คำถามที่พบบ่อยของ Unicodeเงียบในเรื่องนี้ แต่ความประทับใจของฉันคือว่ามันจะไม่ยากขึ้นสำหรับเครื่องมือเค้าโครงเพื่อรองรับลำดับการเรียงลำดับที่ไม่ใช่ลำดับของภาพกราฟิกเนื่องจากในทั้งสองกรณี
โอเว่น

มนุษย์ต่างดาวเหล่านี้มีชีวิตอยู่ได้นานแค่ไหนและมีตัวละครกี่ตัวที่ไม่สามารถแยกออกมาเป็นภาพกราฟิกได้ในช่วงวัยเด็ก ฮันกึล precomposed และรักษาข้อได้เปรียบ byte มากกว่าอังกูลย่อยสลายแม้หลังจาก gzip?
Damian Yerrick

-2

แก้ไข: คำถามนี้ระบุว่า "ตัวละครใหม่นับล้านตัว" ทำให้ง่ายต่อการตอบ:

ไม่ Utf-8 เป็นการเข้ารหัส Unicode Unicode มี codespace ซึ่งอนุญาตให้codepoints 1,114,112 แตกต่างกันและน้อยกว่าหนึ่งล้านถูกกำหนดในปัจจุบัน ดังนั้นจึงเป็นไปไม่ได้ที่จะสนับสนุนตัวละครใหม่หลายล้านตัวใน Unicode ตามคำนิยามไม่มีการเข้ารหัส Unicode สามารถรองรับอักขระได้มากกว่าที่ Unicode กำหนดไว้ (แน่นอนว่าคุณสามารถโกงได้โดยการเข้ารหัสระดับต่อไป - ข้อมูลประเภทใดก็ได้ที่สามารถแสดงด้วยอักขระสองตัวหลังจากทั้งหมด)


ในการตอบคำถามเดิม:

Unicode ไม่รองรับภาษาดังกล่าวรองรับอักขระ - สัญลักษณ์ที่ใช้แสดงภาษาในรูปแบบที่เป็นลายลักษณ์อักษร

ไม่ใช่มนุษย์ทุกภาษาที่มีการเขียนเป็นตัวแทนดังนั้น Unicode จึงไม่สนับสนุนภาษามนุษย์ทุกภาษา นอกจากนี้สัตว์จำนวนมากสื่อสารกัน แต่ไม่มีภาษาเขียน ยกตัวอย่างเช่นปลาวาฬมีรูปแบบของการสื่อสารที่ซับซ้อนพอที่จะเรียกภาษา แต่ไม่มีรูปแบบการเขียนใด ๆ (และไม่สามารถจับได้ด้วยสัทสัทอักษรที่มีอยู่) ดังนั้นแม้แต่ Unicode จึงไม่รองรับภาษาทั้งหมดในโลก

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

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

แม้ว่าเผ่าพันธุ์มนุษย์ต่างดาวมีภาษาที่มีระบบการเขียนที่มีชุดสัญลักษณ์ จำกัด ระบบนี้อาจไม่สามารถรองรับใน Unicode ได้ Unicode คาดว่าการเขียนจะเป็นลำดับเชิงเส้นของสัญลักษณ์ สัญกรณ์ดนตรีเป็นตัวอย่างของระบบการเขียนที่ไม่สามารถแสดงใน Unicode ได้อย่างสมบูรณ์เพราะความหมายถูกเข้ารหัสทั้งตัวเลือกของสัญลักษณ์และการจัดวางแนวตั้งและแนวนอน (Unicode สนับสนุนสัญลักษณ์ดนตรีเป็นรายบุคคล แต่ไม่สามารถเข้ารหัสคะแนนได้) การแข่งขันเอเลี่ยนที่สื่อสารโดยใช้ดนตรีโพลีโฟนิก (ไม่ใช่เรื่องแปลก) หรือช่องทางการสื่อสารที่มีความซับซ้อนคล้ายกันอาจมีระบบการเขียนที่ดูเหมือนคะแนนดนตรีและ Unicode ไม่สามารถรองรับสิ่งนี้ได้

แต่ให้เถียงกันเถอะสมมติว่าทุกภาษาแม้แต่ภาษาต่างประเทศสามารถแสดงเป็นลำดับเชิงเส้นของสัญลักษณ์ที่เลือกจากเซต จำกัด Unicode นั้นใหญ่พอสำหรับการรุกรานเอเลี่ยนหรือไม่? ปัจจุบัน Unicode มี codepoints ที่ไม่ได้รับมอบหมายน้อยกว่าหนึ่งล้าน ภาษาจีนมีอักขระนับแสนตัวตามพจนานุกรมภาษาจีนที่ครอบคลุมมากที่สุด (ปัจจุบัน Unicode ไม่สนับสนุนทั้งหมดเป็นอักขระที่ต่างกัน) ดังนั้นเพียงสิบภาษาที่มีความซับซ้อนของจีนจะใช้ Unicode ทั้งหมด บนโลกเรามีระบบการเขียนที่แตกต่างกันหลายร้อย แต่โชคดีที่ส่วนใหญ่เป็นตัวอักษรมากกว่าอุดมคติและดังนั้นจึงมีตัวละครจำนวนน้อย หากทุกภาษาที่เขียนใช้อักษรจีนเช่นเดียวกับยูนิโค้ดคงไม่ใหญ่พอสำหรับโลก การใช้ตัวอักษรมาจากการพูดซึ่งใช้จำนวนหน่วยเสียงที่ จำกัด เท่านั้น แต่นั่นเป็นลักษณะเฉพาะสำหรับสรีรวิทยาของมนุษย์ ดังนั้นแม้แต่ดาวเคราะห์ต่างด้าวเพียงดวงเดียวที่มีระบบการเขียนเชิงอุดมคติเพียงโหลเดียวก็อาจเกินกว่าที่ Unicode สามารถรองรับได้ ตอนนี้ให้พิจารณาว่ามนุษย์ต่างดาวคนนี้ได้รุกรานดาวเคราะห์ดวงอื่นก่อนโลกแล้วหรือยังและรวมถึงระบบการเขียนของพวกเขาในชุดอักขระที่ต้องได้รับการสนับสนุน

การขยายหรือแก้ไขการเข้ารหัสปัจจุบันหรือการแนะนำการเข้ารหัสใหม่จะไม่สามารถแก้ปัญหานี้ได้เนื่องจากข้อ จำกัด อยู่ในจำนวนรหัสจุดที่ Unicode รองรับ

ดังนั้นคำตอบน่าจะเป็นไม่


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

3
บางส่วนของคำตอบนี้เป็นสิ่งที่ดี แต่จะพูดว่า "ไม่เพียง แต่มันจะไม่มีแบบฟอร์มที่เป็นลายลักษณ์อักษรเท่านั้น แต่มันไม่สามารถแสดงในรูปแบบที่เป็นลายลักษณ์อักษร" ได้อย่างผิดปกติ สิ่งใดก็ตามที่สื่อความหมายสามารถลดลงเป็นบิตและสิ่งที่ลดลงเป็นบิตสามารถแปลงเป็นสตรีมอักขระใด ๆ ที่คุณชอบได้
Steven Burnap

2
@StevenBurnap True แต่ Unicode เป็นมากกว่าลำดับของบิต มันเป็นวิธีการตีความบิตเหล่านั้นซึ่งค่อนข้างเข้มงวด ใช่ชุดอักขระ Unicode สามารถขยายได้เพื่อแสดงสิ่งต่าง ๆ จากรูปภาพไปยังคำสั่ง CNC แต่นี่จะเป็นสิ่งมีชีวิตที่แตกต่างกันมาก
โอเว่น

4
โปรดจำไว้ว่าสิ่งที่สัญลักษณ์ยูนิโค้ดอธิบาย (ในภาษาส่วนใหญ่) เป็นรูปแบบในการแปรผันของความกดอากาศและสำหรับภาษาส่วนใหญ่แล้วมันเป็นงานที่ค่อนข้างยุ่งเหยิงในการจับคู่รูปแบบเหล่านั้น
Steven Burnap

3
ดังนั้นคุณหมายถึงประโยค "บิน 45 วินาทีโดยมีดวงอาทิตย์ 15 องศาไปทางซ้ายของคุณแล้วบิน 10 วินาทีโดยที่พระอาทิตย์อยู่ที่ 10 องศาทางด้านขวา" เป็นไปไม่ได้เหรอ? แน่นอนว่ามันต้องมีตำแหน่งของดวงอาทิตย์ในเวลานั้นตามบริบท
Steven Burnap
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.