เหตุใดการเปรียบเทียบค่าเริ่มต้นของ MySQL จึงเป็น latin1_swedish_ci


112

อะไรคือเหตุผลเบื้องหลังการตั้งค่าlatin1_swedish_ciเป็นค่าเริ่มต้นที่คอมไพล์แล้วเมื่อตัวเลือกอื่น ๆ ดูสมเหตุสมผลกว่ามากเช่นlatin1_general_ciหรือutf8_general_ci?


6
สวีเดนเพิ่งซื้อเกียรติยศนั้น [ตลก]
zerkms


1
โปรดทราบว่าutf8_general_ciไม่รองรับ UTF-8 4 ไบต์ดังนั้นสำหรับการสนับสนุน UTF-8 จริงที่คุณต้องการutf8mb4_general_ciหรือหนึ่งในmb4ตัวแปรอื่น ๆ
ColinM

คำตอบ:


109

เจ้าหมอที่เขียนมันร่วมหัวของบริษัท สวีเดน

อาจด้วยเหตุผลที่คล้ายกันภาษาเริ่มต้นของ Microsoft SQL Server us_english


5
เขาเป็นชาวฟินแลนด์ แต่ชาวฟินแลนด์และสวีเดนมีอักขระพิเศษเหมือนกันเกือบทั้งหมดดังนั้นพวกเขาจึงใช้การเปรียบเทียบแบบกรณีเดียวกัน
kommradHomer

5
พูดถึง 'ค่าเริ่มต้นที่ดี' ซึ่งแน่นอนว่าไม่ใช่ เยี่ยมมากที่ได้เห็นว่า 20 ปีหลังจากนั้นคืออะไร? utf8_general_ciพวกเขาเปลี่ยนนี้ในการเริ่มต้นมีสติเช่น เก่งมาก MySQL!
Michael Trouw

2
และฉันคิดว่ามันอาจจะดีที่สุดสำหรับฉัน bc ฉันไม่ใช่ผู้เชี่ยวชาญ ในขณะที่ชีวิตของฉันคือเรื่องโกหก
Pablo Escobar

3
ใช่คุณพูดถูกเขาชื่อ MariDB (ภรรยาชื่อมาเรีย) และ MaxDB (ลูกชายของเขาชื่อแม็กซ์) แต่ทำไมเขาถึงทิ้งชื่อลูกสาว .. ! :) ฮ่า ๆ. !
Ajmal Praveen

90

latin1_swedish_ciutf8_general_ciเป็นชุดอักขระไบต์เดียวซึ่งแตกต่างจาก

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


36
ฉันชอบคำตอบนี้เพราะมันพยายามที่จะพิสูจน์การเลือกละตินสวีเดนอย่างเป็นกลาง อย่างไรก็ตามคำตอบที่ได้รับการยอมรับดูเหมือนจะเป็นคำอธิบายที่เป็นไปได้มากกว่าจากมุมมองทางสังคมว่าเหตุใดชาวสวีเดนจึงได้รับเลือกเป็นพิเศษ
Alan

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

3
-1 คำตอบที่ยอมรับอาจเป็นเพียงความเห็น แต่สมเหตุสมผลกว่าคำตอบนี้ 100 เท่า นอกจากนี้คุณจะเห็นว่า "เจ้าหมอที่เขียนมัน" ยังตั้งชื่อ MariaDB ตาม daugther และ maxDB ตามลูกชายของเขา
kommradHomer

2
"latin1_general_ci มีการรองรับอักขระพิเศษต่างๆที่ใช้ในภาษายุโรป" - เพื่อให้ชัดเจนว่า utf8_general_ci ซึ่งแตกต่างจาก utf8_unicode มีการรองรับอักขระเฉพาะภาษายุโรปอย่างกว้างขวาง ฉันไม่เห็นข้อได้เปรียบเหนือ "latin1_swedish_ci" หรือว่าฉันผิด?
MEM

ตัวอย่างเช่น CHAR (2) latin1 ใช้ 2 ไบต์ CHAR (2) utf8mb4 (ซึ่งเป็น utf8 แบบเต็ม) ใช้ 8 ไบต์ ฉันใช้ latin1 เพื่อเก็บรหัสประเทศ 2 หลักเพราะจะไม่มีอักขระที่ไม่ใช่ยุโรป
the_nuts
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.