文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Go驱动插入时MySQL编码问题

2024-02-09 16:36

关注

php小编鱼仔给大家带来关于使用Go驱动插入时MySQL编码问题的解决方法。在使用Go编写MySQL插入操作时,有时会遇到编码不一致的问题,导致数据插入出现乱码或无法插入的情况。这篇文章将为大家详细介绍如何解决这个问题,让你的数据插入操作更加顺畅。

问题内容

我正在尝试将 utf-8 文本存储到编码为 latin1_swedish_ci 的表中。我无法更改编码,因为我无法直接访问数据库。所以我正在尝试使用这个提供编码器的 go 库将文本编码为 latin-1,并且这个库具有包装编码器的函数,以便它替换无效字符而不是返回错误。

但是当我尝试插入行时,mysql 抱怨 error 1366:第 1 行 列“description”的字符串值不正确:“\\xe7\\xe3o pa...”。

我尝试将相同的文本写入文件,并且 file -i 报告此 file.txt: application/octet-stream;字符集=binary

示例

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)

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

    w := encoder.Writer(f)
    w.Write([]byte(s))
}

我可能错过了一些非常明显的东西,但我对编码的了解非常少。

提前致谢。

解决方法

您在期待 çã 吗?

问题很容易解决。当 inserting 文本时,mysql 会很乐意从 latin1 转换为 utf8。但你必须告诉它你的客户端正在使用 latin1。这可能是在连接 mysql 期间完成的,目前可能默认为 utf8 或 utf-8 或 utf8mb4。有点像

charset=latin1

以上就是使用Go驱动插入时MySQL编码问题的详细内容,更多请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯