Rumah > pembangunan bahagian belakang > Golang > Aksara UTF8 salah selepas memilih daripada postgres

Aksara UTF8 salah selepas memilih daripada postgres

WBOY
Lepaskan: 2024-02-12 19:48:09
ke hadapan
1223 orang telah melayarinya

从 postgres 选择后 UTF8 字符不正确

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.

Kandungan soalan

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
Salin selepas log masuk

(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?

Penyelesaian

Pastikan pangkalan data anda ditetapkan dengan betul kepada UTF8. Tempatan telah ditetapkan apabila mencipta pangkalan data yang boleh menyebabkan LOWER 等 sql 函数出现问题。使用 pg_dropclusterpg_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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan