Isu pengekodan MySQL apabila memasukkan menggunakan pemacu Go

WBOY
Lepaskan: 2024-02-09 16:00:10
ke hadapan
530 orang telah melayarinya

Isu pengekodan MySQL apabila memasukkan menggunakan pemacu Go

editor php Yuzai membawakan anda penyelesaian kepada masalah pengekodan MySQL apabila menggunakan pemacu Go untuk memasukkan. Apabila menggunakan Go untuk menulis operasi sisipan MySQL, anda kadangkala menghadapi ketidakkonsistenan pengekodan, mengakibatkan sisipan data bercelaru atau kegagalan untuk disisipkan. Artikel ini akan memperkenalkan anda secara terperinci cara menyelesaikan masalah ini dan menjadikan operasi pemasukan data anda lebih lancar.

Kandungan soalan

Saya cuba menyimpan teks utf-8 ke dalam jadual yang dikodkan sebagai latin1_swedish_ci. Saya tidak boleh menukar pengekodan kerana saya tidak mempunyai akses terus ke pangkalan data. Jadi saya cuba mengekod teks ke latin-1 menggunakan perpustakaan go ini yang menyediakan pengekod, dan perpustakaan ini mempunyai fungsi yang membalut pengekod supaya ia menggantikan aksara yang tidak sah dan bukannya mengembalikan ralat.

Tetapi apabila saya cuba memasukkan baris, mysql merungut error 1366:第 1 行 Nilai rentetan yang salah untuk lajur "penerangan": "\xe7\xe3o pa...".

Saya cuba menulis teks yang sama pada fail dan file -i 报告此 file.txt: application/octet-stream;字符集=binary.

Contoh

package main

import (
    "fmt"
    "os"

    "golang.org/x/text/encoding"
    "golang.org/x/text/encoding/charmap"
)

func main() {
    s := "foo – bar"

    encoder := charmap.ISO8859_1.NewEncoder()
    encoder = encoding.ReplaceUnsupported(encoder)

    encoded, err := encoder.String(s)
    if err != nil {
        panic(err)
    }

    fmt.Println(s)
    fmt.Println(encoded)
    fmt.Printf("%q\n", encoded)

    /* file test */
    f, err := os.Create("file.txt")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    w := encoder.Writer(f)
    w.Write([]byte(s))
}
Salin selepas log masuk

Saya mungkin kehilangan sesuatu yang sangat jelas, tetapi saya tahu sedikit tentang pengekodan.

Terima kasih terlebih dahulu.

Penyelesaian

Adakah anda menantikan çã?

Masalah mudah diselesaikan. Apabila inserting teks, mysql dengan senang hati akan menukar daripada latin1 kepada utf8. Tetapi anda perlu memberitahu bahawa pelanggan anda menggunakan latin1. Ini boleh dilakukan semasa sambungan ke mysql, yang pada masa ini mungkin lalai kepada utf8 atau utf-8 atau utf8mb4. Sedikit seperti

charset=latin1
Salin selepas log masuk

Atas ialah kandungan terperinci Isu pengekodan MySQL apabila memasukkan menggunakan pemacu Go. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!