所以我试图使用sql驱动程序将此字符串输入到mysql数据库中。我收到此错误 -
Do?a Merced Elementary
panic: Error 1366: Incorrect string value: '\x96a Mer...' for column 'name' at row 1
我想要排除这个条目,但是还没有能够这样做。我试过了 -
if !strings.ContainsAny(splitStr[2], "U+0303") {
if !strings.ContainsAny(splitStr[2], '\x96') {
但这没效果。
最好让mysql处理这个,但我不确定如何。
有什么建议吗?
修改
这是我连接到我的数据库的方式
db, err := sql.Open("mysql", "psanker:123@/education_data")
err = db.Ping()
db.SetMaxOpenConns(0)
check(err)
if err != nil {
fmt.Println("Failed to prepare connection to database")
log.Fatal("Error:", err.Error())
}
这就是我的问题所在
districtResult, err := db.Exec("INSERT INTO districts(name) VALUES(?)", strings.TrimSpace(splitStr[2]))
check(err)
SHOW CREATE TABLE的输出
---------------------------------+
| Table | Create Table |
+-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| districts | CREATE TABLE `districts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
答案 0 :(得分:0)
在Apple上运行?我认为应该说Doña Merced Elementary
?然而,要从x96获得ñ
,您必须已经开始使用" MacRoman"编码
简单的解决方案可能在连接到MySQL后立即执行SET NAMES macroman
。
答案 1 :(得分:0)
请将排序规则更改为utf8_general_ci
。它应该工作