สร้างฐานข้อมูล MySQL ด้วย charset UTF-8


142

ฉันใหม่กับ MySQL และฉันต้องการที่จะรู้ว่า:

ฉันจะสร้างฐานข้อมูลด้วยชุดอักขระutf-8เช่นเดียวกับที่ฉันทำใน navicat ได้อย่างไร

create mydatabase;

... ดูเหมือนว่าจะใช้ชุดอักขระเริ่มต้นบางประเภท

คำตอบ:


232

หมายเหตุ:ต่อไปนี้ถือว่าเป็นแนวปฏิบัติที่ดีขึ้น (ดูคำตอบของนักขี่จักรยานยนต์ 858 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

คำตอบเดิม:

ลองสิ่งนี้:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

สำหรับข้อมูลเพิ่มเติมดูชุดอักขระฐานข้อมูลและการเรียงในฐานข้อมูล MySQL


1
ของ MySQL คือสิ่งที่เหลือของเราเรียกutf8mb4 utf8แล้ว MySQL utf8คุณถามอะไร เป็นรุ่นที่ จำกัด ของ utf-8 ที่ใช้งานได้กับชุดย่อยของอักขระเท่านั้น แต่ล้มเหลวสำหรับสิ่งต่างๆเช่นอิโมจิ ต่อมาพวกเขาเพิ่มutf8mb4ซึ่งเป็นการใช้งานที่ถูกต้อง แต่ MySQL ต้องย้อนกลับเข้ากันได้กับข้อผิดพลาดเก่าดังนั้นนั่นคือเหตุผลที่การเพิ่มการเข้ารหัสใหม่แทนที่จะแก้ไขการเข้ารหัสเก่า utf8mb4ฐานข้อมูลใหม่ทุกคนควรใช้
Stijn de Witt

หากคุณต้องการที่จะไปลงหลุมกระต่าย: COLLATE utf8mb4_unicode_520_ciหรือหรือแม้กระทั่งสถานที่เฉพาะเจาะจงตัวอย่างเช่น:utf8mb4_0900_ai_ci utf8mb4_vi_0900_ai_ciสำหรับ MariaDB 10.2.2+ คุณมี "nopad" utf8mb4_unicode_520_nopad_ciเรียง dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
Frank Forte

@shellbye utf8mb4_0900_ai_ciพิจารณาในการปรับปรุงคำตอบของคุณจะทำอย่างไรเกี่ยวกับการกล่าวถึง ดูเหมือนว่าจะดีกว่าutf8mb4_unicode_ci
มานูเอลจอร์แดน

63

คุณควรใช้:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

โปรดทราบว่าutf8_general_ciไม่แนะนำวิธีปฏิบัติที่ดีที่สุดอีกต่อไป ดูคำถาม & คำตอบที่เกี่ยวข้อง:

ความแตกต่างระหว่าง utf8_general_ci และ utf8_unicode_ciบน Stack Overflow คืออะไร


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