在Golang处理西班牙语

时间:2015-09-01 04:57:09

标签: mysql utf-8 go

所以我试图使用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 |

2 个答案:

答案 0 :(得分:0)

在Apple上运行?我认为应该说Doña Merced Elementary?然而,要从x96获得ñ,您必须已经开始使用" MacRoman"编码

简单的解决方案可能在连接到MySQL后立即执行SET NAMES macroman

答案 1 :(得分:0)

请将排序规则更改为utf8_general_ci。它应该工作