คำถามติดแท็ก unicode

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

20
ควรถือว่า UTF-16 เป็นอันตรายหรือไม่?
ฉันจะถามสิ่งที่อาจเป็นคำถามโต้เถียง: "หนึ่งในการเข้ารหัสที่นิยมมากที่สุด UTF-16 ถือว่าเป็นอันตรายหรือไม่" ทำไมฉันถึงถามคำถามนี้ มีโปรแกรมเมอร์กี่คนที่ตระหนักถึงความจริงที่ว่า UTF-16 เป็นความยาวแปรผันได้หรือไม่? โดยสิ่งนี้ฉันหมายความว่ามีจุดรหัสที่แสดงเป็นคู่ตัวแทนแทนใช้องค์ประกอบมากกว่าหนึ่ง ฉันรู้ว่า; แอปพลิเคชั่นเฟรมเวิร์กและ API จำนวนมากใช้ UTF-16 เช่นสตริงของ Java, สตริง C #, Win32 APIs, ไลบรารี Qt GUI, ไลบรารี ICU Unicode เป็นต้นอย่างไรก็ตามจากทั้งหมดนี้มีข้อบกพร่องพื้นฐานมากมายในการประมวลผล ของอักขระจาก BMP (อักขระที่ควรเข้ารหัสโดยใช้สององค์ประกอบ UTF-16) ตัวอย่างเช่นลองแก้ไขหนึ่งในตัวละครเหล่านี้: LE ( U + 1D11E ) ดนตรีซิมโฟนี G CLEF 𝕥 ( U + 1D565 ) คณิตศาสตร์สองชั้นซ้อนขนาดเล็ก 𝟶 …
432 unicode 

5
UTF-8 จะสามารถรองรับภาษาต่างประเทศที่มีตัวละครใหม่นับล้านตัวได้หรือไม่?
ในกรณีที่มีการบุกรุกจากมนุษย์ต่างดาวและเราถูกบังคับให้สนับสนุนภาษาของพวกเขาในทุกระบบคอมพิวเตอร์ที่มีอยู่ของเรา UTF-8 ได้รับการออกแบบมาเพื่อให้สามารถใช้อักขระจำนวนมากได้หรือไม่? (แน่นอนเราไม่ทราบว่ามนุษย์ต่างดาวมีภาษาจริง ๆ มีวิธีสื่อสารกันหรือไม่ แต่เพื่อการโต้แย้งโปรดลองจินตนาการว่าพวกเขาทำ) ตัวอย่างเช่นหากภาษาของพวกเขาประกอบด้วยร่ายมนตร์ที่ค้นพบใหม่สัญลักษณ์และ / หรือการรวมตัวอักษร UTF-8 ในทางทฤษฎีสามารถขยายได้ในลักษณะที่ไม่แตกหักเพื่อรวมร่ายมนตร์ใหม่เหล่านี้และยังรองรับซอฟต์แวร์ที่มีอยู่ทั้งหมดหรือไม่ ฉันสนใจมากขึ้นถ้าร่ายมนตร์ไกลเกินขีด จำกัด ขนาดปัจจุบันและต้องการไบต์เพิ่มขึ้นเพื่อแทนร่ายมนตร์เดียว ในกรณีที่ไม่สามารถขยายUTF-8 ได้หรือไม่นั่นพิสูจน์ได้ว่าข้อได้เปรียบเดียวของ UTF-32 นั้นคือขนาดของตัวอักษรที่ต่ำกว่าหรือไม่?
86 unicode  utf-8 

15
การใช้อักขระ Unicode ในชื่อตัวแปรนั้นดีหรือไม่? [ปิด]
ฉันเพิ่งพยายามใช้อัลกอริทึมการจัดอันดับ AllegSkill เพื่อ Python 3 นี่คือลักษณะทางคณิตศาสตร์: ไม่มีจริงๆ. นี่คือสิ่งที่ฉันเขียน: t = (µw-µl)/c # those are used in e = ε/c # multiple places. σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5 จริง ๆ แล้วฉันคิดว่ามันน่าเสียดายที่ Python 3 จะไม่ยอมรับ√หรือ²เป็นชื่อตัวแปร >>> √ = lambda x: x**.5 File "<stdin>", line 1 √ = …
82 naming  unicode 

8
เหตุใดจึงมีการเข้ารหัส Unicode หลายตัว
ฉันคิดว่า Unicode ได้รับการออกแบบมาเพื่อแก้ไขปัญหาทั้งหมดของการเข้ารหัสที่แตกต่างกันมากมายเนื่องจากพื้นที่ที่อยู่ขนาดเล็ก (8 บิต) ในการพยายามก่อนหน้าส่วนใหญ่ (ASCII ฯลฯ ) ทำไมจึงมีการเข้ารหัส Unicode จำนวนมาก แม้แต่รุ่นเดียวกัน (เป็นหลัก) หลายรุ่นเช่น UTF-8, UTF-16 เป็นต้น

2
ไฟล์ CSV UTF-8 ควรมี BOM (เครื่องหมายคำสั่งซื้อแบบไบต์) หรือไม่
ของเราซอฟแวร์สายของธุรกิจที่จะช่วยให้ผู้ใช้สามารถบันทึกข้อมูลบางอย่างเป็นCSV เนื่องจากมีรูปแบบที่แตกต่างกันจำนวนมาก (ทั้งหมดเรียกว่า "CSV") ที่ใช้งานอยู่ใน wild เราจึงต้องตัดสินใจว่า "รูปแบบเริ่มต้น" ควรเป็นอย่างไร เกี่ยวกับสาย / แยกสนามและหนีออกมามีความเป็นมาตรฐานที่เราสามารถใช้: RFC 4180 เกี่ยวกับการเข้ารหัสข้อความUTF-8ดูเหมือนว่าจะเกิดขึ้นในทศวรรษที่ผ่านมาเป็น "รูปแบบไฟล์ข้อความเริ่มต้น" ดังนั้นเราจะใช้มัน คำถามหนึ่งที่เปิดค้างอยู่คือ: เราควรเพิ่มBOMในช่วงเริ่มต้นหรือไม่? ฉันได้อ่านความคิดเห็นและข้อดี / ข้อเสียหลายประการเกี่ยวกับการใช้ BOM โดยทั่วไปแล้ว แต่มีคำแนะนำ "เป็นทางการ" หรืออย่างน้อยฉันทามติชุมชนบางประการเกี่ยวกับการใช้ BOM ในไฟล์ CSV หรือไม่

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

3
ทำไมเราต้องใส่ N ก่อนสตริงใน Microsoft SQL Server
ฉันเรียนรู้ T-SQL จากตัวอย่างที่ฉันเห็นการแทรกข้อความในvarchar()เซลล์ฉันสามารถเขียนเฉพาะสตริงที่จะแทรก แต่สำหรับnvarchar()เซลล์ตัวอย่างทุก ๆ คำนำหน้าสตริงด้วยตัวอักษร N ฉันลองใช้แบบสอบถามต่อไปนี้บนตารางที่มีnvarchar()แถวและทำงานได้ดีดังนั้นคำนำหน้า N จึงไม่จำเป็น: insert into [TableName] values ('Hello', 'World') เหตุใดสตริงจึงถูกนำหน้าด้วย N ในทุกตัวอย่างที่ฉันเห็น ข้อดีหรือข้อเสียของการใช้คำนำหน้านี้คืออะไร

8
ควรยกเลิกการเข้ารหัสอักขระนอกเหนือจาก UTF-8 (และอาจจะ UTF-16 / UTF-32) หรือไม่
สัตว์เลี้ยงของฉันกำลังมองหาโครงการซอฟต์แวร์จำนวนมากที่มีภูเขาของรหัสสำหรับการสนับสนุนชุดอักขระ อย่าเข้าใจฉันผิดฉันทุกคนเข้ากันได้และฉันดีใจที่ผู้แก้ไขข้อความให้คุณเปิดและบันทึกไฟล์ในชุดอักขระหลายชุด สิ่งที่ทำให้ฉันรำคาญคือการแพร่กระจายของการเข้ารหัสอักขระที่ไม่ใช่สากลนั้นมีชื่อว่า "การสนับสนุน Unicode ที่เหมาะสม" แทนที่จะเป็น "ปัญหา" ตัวอย่างเช่นสมมติฉันเลือกใน PostgreSQL และสนับสนุนชุดอักขระ PostgreSQL เกี่ยวข้องกับการเข้ารหัสสองประเภท: การเข้ารหัสไคลเอ็นต์: ใช้ในการสื่อสารระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ การเข้ารหัสเซิร์ฟเวอร์: ใช้เพื่อจัดเก็บข้อความภายในฐานข้อมูล ฉันสามารถเข้าใจได้ว่าทำไมการสนับสนุนการเข้ารหัสลูกค้าจำนวนมากเป็นสิ่งที่ดี ช่วยให้ลูกค้าที่ไม่ทำงานใน UTF-8 สามารถสื่อสารกับ PostgreSQL โดยไม่จำเป็นต้องทำการแปลง สิ่งที่ฉันไม่ได้รับคือ: ทำไม PostgreSQL จึงรองรับการเข้ารหัสเซิร์ฟเวอร์หลายเครื่อง ไฟล์ฐานข้อมูล (เกือบทุกครั้ง) ไม่สามารถใช้งานร่วมกันได้จากรุ่น PostgreSQL หนึ่งไปยังรุ่นถัดไปดังนั้นความเข้ากันได้ข้ามรุ่นจึงไม่ใช่ปัญหาที่นี่ UTF-8 เป็นชุดอักขระมาตรฐานที่เข้ากันได้กับ ASCII เท่านั้นที่สามารถเข้ารหัสรหัสสถานี Unicode ทั้งหมด (ถ้าฉันผิดให้ฉันรู้) ฉันอยู่ในค่ายที่ UTF-8 เป็นชุดตัวละครที่ดีที่สุดแต่ฉันก็ยินดีที่จะใส่ชุดอักขระสากลอื่น ๆ เช่น UTF-16 และ UTF-32 ฉันเชื่อว่าชุดอักขระที่ไม่ใช่สากลควรเลิกใช้แล้ว มีเหตุผลที่น่าสนใจที่พวกเขาไม่ควร?

2
เหตุใด Java จึงใช้ UTF-16 สำหรับการแทนค่าสตริงภายใน
ฉันคิดว่าเหตุผลนั้นเร็วอาเรย์ชอบเข้าถึงตัวละครที่ดัชนี แต่ตัวละครบางตัวไม่พอดีกับ 16 บิตดังนั้นมันจะไม่ทำงาน ... ดังนั้นถ้าคุณต้องจัดการกับกรณีพิเศษอยู่แล้วทำไมไม่ใช้ UTF-8 ล่ะ?
29 java  strings  unicode 

5
ปัญหาใดที่ทำให้คนใช้การเข้ารหัสเฉพาะภาษาญี่ปุ่นมากกว่า Unicode
ที่ทำงานฉันเจอไฟล์ข้อความภาษาญี่ปุ่นจำนวนมากใน Shift-JIS และการเข้ารหัสอื่น ๆ มันทำให้เกิดปัญหาmojibake (อักขระที่อ่านไม่ได้) จำนวนมากสำหรับผู้ใช้คอมพิวเตอร์ทุกคน Unicode มีวัตถุประสงค์เพื่อแก้ไขปัญหานี้โดยการกำหนดชุดอักขระเดียวสำหรับทุกภาษาและแนะนำให้ใช้ serialization UTF-8 สำหรับการใช้งานบนอินเทอร์เน็ต เหตุใดทุกคนจึงไม่เปลี่ยนจากการเข้ารหัสเฉพาะภาษาญี่ปุ่นเป็น UTF-8 ปัญหาอะไรหรือข้อเสียของ UTF-8 กำลังชักจูงผู้คนให้กลับมา? แก้ไข: W3C แสดงปัญหาที่ทราบเกี่ยวกับ Unicodeนี่อาจเป็นเหตุผลด้วยหรือไม่


4
เหตุใด PHP จึงไม่สามารถรองรับ Unicode ได้อย่างสมบูรณ์
ทุกคนรู้ว่า PHP มีปัญหากับ Unicode เวอร์ชัน 6 ถูกยกเลิกอย่างมีประสิทธิภาพเนื่องจากความยุ่งยากในการใช้ Unicode แต่ฉันสงสัยว่าใครรู้เหตุผลที่แน่นอนคืออะไร? ปัญหาด้านสถาปัตยกรรม / การออกแบบความกังวลเรื่องประสิทธิภาพปัญหาชุมชน (ฉันไม่เดิมพัน) มีอะไรอื่นอีกหรือ

3
เป็นไปได้หรือไม่ที่จะเขียนฟังก์ชั่นย้อนกลับของสตริงทั่วไปที่เหมาะกับการแปลท้องถิ่นและประเภทสตริงทั้งหมด?
ฉันแค่ดูการนำเสนอJon Skeet (กับ Tony the Pony) จาก Dev-Days ถึงแม้ว่า "ฟังก์ชั่นเขียนกลับสตริง" กำลังเขียนรหัสสัมภาษณ์ 101 - ฉันไม่แน่ใจว่าจริง ๆ แล้วมันเป็นไปได้ที่จะเขียนฟังก์ชั่นย้อนกลับของสตริงทั่วไปแน่นอนไม่ได้หนึ่งที่ทำงานในท้องถิ่นทั้งหมดและทุกประเภทสตริง นอกเหนือจากการตรวจสอบว่าสตริงอินพุตคือ ascii, UTF8, UTF16 (ความยาวคงที่และผันแปร) เป็นต้น มี 'ใช้การเน้นเสียงกับอักขระถัดไป' (U + 0301) รหัสที่จอนเน้นไว้ จากนั้นจะมีลิ้นที่อาจแสดงหรือไม่แสดงหรือเข้ารหัสเป็นอักขระคู่ ดูเหมือนว่า "การย้อนกลับสตริง" เป็นหนึ่งในงานด้านวิทยาศาสตร์คอมพิวเตอร์ที่ยากขึ้น!

2
UTF-16 เป็นความกว้างคงที่หรือความกว้างผันแปรหรือไม่? ทำไม UTF-8 ถึงไม่มีปัญหาการสั่งซื้อแบบไบต์
UTF-16 เป็นความกว้างคงที่หรือความกว้างผันแปรหรือไม่? ฉันได้รับผลลัพธ์ที่แตกต่างจากแหล่งข้อมูลอื่น: จากhttp://www.tbray.org/ongoing/When/200x/2003/04/26/UTF : UTF-16 เก็บอักขระ Unicode ในช่องสิบหกบิต จากhttp://en.wikipedia.org/wiki/UTF-16/UCS-2 : UTF-16 (รูปแบบการแปลง Unicode แบบ 16 บิต) เป็นการเข้ารหัสอักขระสำหรับ Unicode ที่สามารถเข้ารหัสได้ 1,112,064 หมายเลข [1] (เรียกว่าจุดโค้ด) ในพื้นที่โค้ด Unicode ตั้งแต่ 0 ถึง 0x10FFFF มันสร้างผลลัพธ์ความยาวผันแปรของหน่วยรหัส 16 บิตหนึ่งหรือสองหน่วยต่อจุดรหัส จากแหล่งแรก UTF-8 ยังมีข้อได้เปรียบที่หน่วยการเข้ารหัสเป็นไบต์ดังนั้นจึงไม่มีปัญหาการเรียงลำดับไบต์ ทำไม UTF-8 ถึงไม่มีปัญหาการสั่งซื้อแบบไบต์ มันเป็นความกว้างผันแปรและตัวละครหนึ่งตัวอาจมีมากกว่าหนึ่งไบต์ดังนั้นฉันคิดว่าคำสั่งแบบไบต์อาจเป็นปัญหาได้หรือไม่ ขอบคุณและขอแสดงความนับถือ!

3
ค่า Sentinel Unicode ที่ฉันสามารถใช้ได้
ฉัน desiging รูปแบบไฟล์และต้องการทำถูกต้อง เนื่องจากเป็นรูปแบบไบนารีดังนั้นไบต์แรก (หรือไบต์) ของไฟล์จึงไม่ควรมีรูปแบบข้อความที่ถูกต้อง (เช่นเดียวกับในส่วนหัวของไฟล์ PNG 1 ) วิธีนี้ช่วยให้เครื่องมือที่ไม่รู้จักรูปแบบยังคงเห็นว่าไม่ใช่ไฟล์ข้อความโดยดูที่สองสามไบต์แรก codepoint ด้านบนใด ๆ0x7Fนั้นไม่ถูกต้อง US-ASCII ดังนั้นจึงเป็นเรื่องง่าย แต่สำหรับ Unicode มันเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง นอกเหนือจากตัวอักษร Unicode ที่ถูกต้องมีตัวอักษรส่วนตัวการใช้งาน , noncharactersและยามรักษาการณ์ที่ผมพบในUnicode เอกชนใช้ตัวอักษร, Noncharacters และยามรักษาการณ์คำถามที่พบบ่อย อะไรคือลำดับของ Sentinel ของไบต์ที่ฉันสามารถใช้เมื่อเริ่มต้นไฟล์ซึ่งจะทำให้ US-ASCII, UTF-8, UTF-16LE และ UTF-16BE ที่ไม่ถูกต้อง เห็นได้ชัดว่าไบต์แรกไม่สามารถมีค่าด้านล่างได้0x80เนื่องจากจะเป็นอักขระ US-ASCII (ตัวควบคุม) ที่ถูกต้องดังนั้นจึง0x00ไม่สามารถใช้งานได้ นอกจากนี้เนื่องจากอักขระที่ใช้งานส่วนตัวเป็นอักขระ Unicode ที่ถูกต้องฉันจึงไม่สามารถใช้ codepoints เหล่านั้นได้เช่นกัน เนื่องจากมันจะต้องทำงานกับทั้ง UTF-16 และend -little-endian, noncharacterเช่น0xFFFEนั้นเป็นไปไม่ได้เนื่องจาก …
14 unicode 

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