使用表情符号导出数据库

时间:2018-03-12 09:43:09

标签: mysql sql sequelpro datagrip

我想用表情符号导出我的数据库,但我的导出问题。当我导出表格时,表情符号被"?"。

取代

例如:

enter image description here

当我导出和导入时,我有这个:

enter image description here

我检查了我的桌子(utf-8):

enter image description here

我使用Sequel Pro导出和导入。

但是,如果我尝试使用DataGrip,并且直接使用"?",我从未看过表情符号:

enter image description here

1 个答案:

答案 0 :(得分:1)

运行查询之前,请运行

class ViewController: UIViewController {

let testString : DataResponse!

override func viewDidLoad() {
super.viewDidLoad()
    let accessToken = "1234"
    let authorizationRequestHeader = "https://www.somewhere.com=\(accessToken)"


    guard let url = URL(string: authorizationRequestHeader) else {
        print("Error")
        return
    }
    let session = URLSession.shared
    session.dataTask(with: url) { (stringData, response, Error) in
        testString =  try! dataResponse.decode(DataResponse.self, from:stringData!)
        print("Number of records: \(testString.data.budgets.count)")

    }.resume()


print("Number of records: \(testString.data.budgets.count)")
}

为什么?

简而言之。

首先,表情符号通常占用4个字节,但是mysql的set names utf8mb4; utf8的别名,使用1到3个字节(即最大3个字节),这无法理解表情符号char 。这样,您会看到一个“?”在你的结果。 utf8mb3可以完成这项工作,因为每个多字节字符最多需要四个字节。

第二,utf8mb4将设置三个会话变量,例如

set names utf8mb4

这将协调服务器,客户端和结果字符集之间的障碍,因此我们可以正确查看表情符号。

有关更多信息,请参见文档

https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html

https://dev.mysql.com/doc/refman/8.0/en/set-names.html