我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

使用 go-sqlmock 并将参数插入模拟查询的问题

在PHP开发中,数据库操作是非常常见的需求,而对于一些需要测试的场景,我们又不希望直接操作真实的数据库。这时候,我们可以使用go-sqlmock来模拟数据库查询,从而达到我们想要的测试效果。本文将向大家介绍如何使用go-sqlmock,并将
使用 go-sqlmock 并将参数插入模拟查询的问题
2024-02-11

Excel数据导入Mysql常见问题汇总:如何处理导入时遇到的编码问题?

Excel数据导入Mysql常见问题汇总:如何处理导入时遇到的编码问题?导入Excel数据到MySQL数据库是一个常见的任务。然而,在这个过程中,往往会遇到编码问题。本文将探讨几种常见的编码问题,并提供相应的解决方案。问题:导入Excel中
2023-10-22

MySQL中使用delete_at(时间戳)作为逻辑删除标记时如何使用MyBatis-Plus逻辑删除组件插入时间戳,以及如何解决自动填充失效的问题

背景 MySQL中使用delete_at(时间戳)作为逻辑删除标记 在业务中,使用逻辑删除是普遍做法,通常会使用一个名为deleted(0/1)的字段表示删除状态。 但是如果遇到有唯一约束,且可能反复删除和重新插入的表(如用户表,注销用户使
2023-08-30

使用Jenkins + Git Submodule 实现自动化编译,解决代码安全性问题

事情发生在功能机的时代,我们项目组开发一款手机,软件开发成员大概有 20 人左右吧。结果在手机发布的一周后,另一家小厂就推出了软件界面、功能几乎完全一样的手机,除了开机界面。

编程热搜

目录