สิ่งที่คุณมีคือEXTRATERRESTRIAL ALIEN (U+1F47D)
และBROKEN HEART (U+1F494)
สิ่งที่ไม่ได้อยู่ในเครื่องบินหลายภาษาพื้นฐาน พวกเขาไม่สามารถแสดงใน java เป็นอักขระเดียว"👽💔".length() == 4
ได้ พวกเขาไม่ใช่อักขระว่างอย่างแน่นอนและจะเห็นช่องสี่เหลี่ยมหากคุณไม่ได้ใช้แบบอักษรที่รองรับ
MySQL utf8
รองรับเฉพาะเครื่องบินหลายภาษาพื้นฐานและคุณต้องใช้utf8mb4
แทน :
สำหรับอักขระเสริม utf8 ไม่สามารถจัดเก็บอักขระได้เลยในขณะที่ utf8mb4 ต้องการสี่ไบต์ในการจัดเก็บ เนื่องจาก utf8 ไม่สามารถจัดเก็บอักขระได้เลยคุณจึงไม่มีอักขระเสริมใด ๆ ในคอลัมน์ utf8 และคุณไม่จำเป็นต้องกังวลเกี่ยวกับการแปลงอักขระหรือการสูญเสียข้อมูลเมื่ออัปเกรดข้อมูล utf8 จาก MySQL เวอร์ชันเก่า
ดังนั้นเพื่อรองรับอักขระเหล่านี้ MySQL ของคุณต้องเป็น 5.5+ และคุณต้องใช้งานได้utf8mb4
ทุกที่ การเชื่อมต่อการเข้ารหัสความต้องการที่จะutf8mb4
ตั้งตัวจะต้องมีutf8mb4
และ collaction utf8mb4
ความต้องการที่จะเป็น สำหรับ java มันยังคงเป็นเพียง"utf-8"
แต่ MySQL ต้องการความแตกต่าง
ฉันไม่รู้ว่าคุณใช้ไดรเวอร์อะไร แต่วิธีที่ไม่เชื่อเรื่องพระเจ้าของไดรเวอร์ในการตั้งค่าชุดอักขระการเชื่อมต่อคือการส่งแบบสอบถาม:
SET NAMES 'utf8mb4'
ทันทีหลังจากทำการเชื่อมต่อ
ดูสิ่งนี้สำหรับ Connector / J :
14.14: ฉันจะใช้ 4-byte UTF8, utf8mb4 กับ Connector / J ได้อย่างไร
ในการใช้ UTF8 4 ไบต์กับ Connector / J กำหนดค่าเซิร์ฟเวอร์ MySQL ด้วย character_set_server = utf8mb4 Connector / J แล้วจะใช้การตั้งค่าที่
ตราบเท่าที่ characterEncoding ยังไม่ได้รับการตั้งค่าในสตริงการเชื่อมต่อ สิ่งนี้เทียบเท่ากับการตรวจจับอัตโนมัติของชุดอักขระ
ปรับคอลัมน์และฐานข้อมูลของคุณด้วย:
var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL
อีกครั้งเวอร์ชัน MySQL ของคุณต้องค่อนข้างทันสมัยสำหรับการรองรับ utf8mb4