Apabila menggunakan xorm alat ORM golang, kami sering menghadapi masalah aksara Cina yang bercelaru, yang membawa banyak masalah kepada pembangunan dan penyahpepijatan kami. Artikel ini akan memperkenalkan beberapa kaedah untuk menyelesaikan masalah aksara Cina yang kacau.
Sebelum menggunakan xorm, anda perlu memastikan set aksara pangkalan data ditetapkan dengan betul. Jika set aksara pangkalan data ditetapkan kepada utf8mb4, xorm akan menetapkan pengekodan kepada utf8 secara lalai. Ini akan membawa kepada aksara Cina yang bercelaru atau storan yang tidak lengkap.
Anda boleh mengubah suai set aksara pangkalan data melalui pernyataan sql berikut:
ALTER DATABASE <database_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Dalam xorm, anda boleh menentukan jenis bidang. Jika jenis medan ditetapkan dengan tidak betul, ia juga akan menyebabkan masalah bercelaru bahasa Cina.
Contohnya, jika jenis medan ialah varchar(50), tetapi panjang sebenar yang perlu disimpan adalah lebih daripada 50 aksara, masalah dengan aksara Cina yang bercelaru atau pemotongan akan berlaku.
Apabila menggunakan xorm, anda boleh menetapkan jenis medan melalui tag struct, contohnya:
type User struct { ID int64 `xorm:"pk autoincr bigint(20)"` Username string `xorm:"varchar(50) notnull"` Password string `xorm:"varchar(255) notnull"` }
Apabila menggunakan xorm untuk menyimpan Bahasa Cina Semasa membaca data, anda perlu memastikan bahawa data dikodkan dengan betul. Jika kaedah pengekodan rentetan ialah GBK atau GB2312, dan kaedah pengekodan pangkalan data ialah utf8, data Cina akan bercelaru.
xorm menetapkan pengekodan kepada utf8 secara lalai Jika anda perlu menyimpan data yang dikodkan GBK atau GB2312, anda boleh menyelesaikannya dengan menetapkan rentetan sambungan:
engine, err := xorm.NewEngine("mysql", "user:password@tcp(host:port)/db?charset=gbk")
escapedValue := mysql.EscapeString(originalValue)
Atas ialah kandungan terperinci golang xorm Chinese chabled code. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!