将非ascii表单值保存为问号

时间:2016-10-16 23:46:26

标签: mysql go utf-8 sqlx

我正在使用Go sqlx package对MariaDB数据库进行查询,我希望能够将非ascii表单提交的值保存到数据库中。

这是功能:

!1

func QuoteCreate(content string, author string) error { var err error fmt.Println("content, author", content, author) _, err = database.SQL.Exec("INSERT INTO quote (content, author) VALUES (?,?)", content, author) if err != nil { fmt.Println(err) } return standardizeError(err) } 表格有quote个合并和utf8_general_cli引擎。但是,当值不是ascii字符时,表单提交的InnoDBcontent值将保存为author(我尝试过波斯语和简体中文)。

我还尝试过???表格,但遇到了同样的问题。有趣的是,当在终端上保存时,非ascii字符被正确显示。

所以我不知道这里有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但这些解决了这个问题:

ALTER DATABASE mydb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE quote CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;