Editor PHP Apple kadangkala menghadapi masalah aksara UTF8 yang salah selepas pemilihan apabila menggunakan pangkalan data postgres. Dalam kes ini, aksara khas yang disimpan dalam pangkalan data mungkin kelihatan sebagai aksara yang bercelaru atau tidak betul. Penyelesaian kepada masalah ini adalah untuk memastikan paparan aksara yang betul dengan menetapkan pangkalan data dan set aksara sambungan dengan betul. Apabila menggunakan pangkalan data postgres, kita boleh menyelesaikan masalah ini dengan mengubah suai fail konfigurasi atau menetapkan set aksara apabila menyambung ke pangkalan data. Menetapkan set aksara dengan betul akan memastikan kami dapat mengendalikan dan memaparkan pelbagai aksara dengan betul serta meningkatkan kestabilan dan kebolehpercayaan pangkalan data.
Saya mempunyai jadual pangkalan data dalam postgres yang mengandungi alamat e-mel. Salah seorang pelanggan mempunyai umlaut (ü) dalam alamat e-melnya. Ini tidak sepatutnya menjadi masalah, tetapi entah bagaimana rentetan dalam go mengandungi jujukan bait yang salah (ia adalah e3bc dan bukannya c3bc), yang kemudiannya menyebabkan saya banyak masalah.
Saya menyambung ke pangkalan data menggunakan client_encoding=utf8
dan pangkalan data ditetapkan kepada utf8. Jika saya menjalankan arahan berikut, saya dapat melihat bahawa urutan bait dalam pangkalan data adalah seperti yang diharapkan:
SELECT encode("email"::bytea, 'hex') FROM participants WHERE email like 'XXXXXX%'; encode ---------------------------------------------- c3bc
(Selebihnya data disembunyikan)
Saya menggunakan pakej pangkalan data/sql dan pemacu postgres untuk membaca data, dan jika saya mencetak rentetan dalam go, saya mendapat xxxxxxe3bcxxxxxx, yang bukan seperti yang saya harapkan (sekali lagi, menyembunyikan baki e-mel dengan x ).
Adakah ini pepijat atau saya salah faham sesuatu?
Pastikan pangkalan data anda ditetapkan dengan betul kepada UTF8. Tempatan telah ditetapkan apabila mencipta pangkalan data yang boleh menyebabkan LOWER
等 sql 函数出现问题。使用 pg_dropcluster
和 pg_createcluster --encoding=UTF8
mencipta semula pangkalan data.
Atas ialah kandungan terperinci Aksara UTF8 salah selepas memilih daripada postgres. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!