MySQL中的字符编码决定了如何存储和表示字符数据。UTF-8是一种广泛使用的字符编码,支持几乎所有的字符集,包括ASCII、拉丁字母、汉字等。
MySQL中的字符编码主要分为以下几种:
UTF-8适用于需要处理多种语言的应用,如国际化的网站、多语言数据库等。
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在连接数据库时,可以通过以下方式设置字符编码:
import mysql.connector
config = {
'user': 'your_user',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
'charset': 'utf8mb4'
}
cnx = mysql.connector.connect(**config)
原因:可能是数据库、表或连接的字符编码设置不正确。
解决方法:
SHOW VARIABLES LIKE 'character_set_%';
确保character_set_server
和character_set_database
都设置为utf8mb4
。
原因:可能是客户端或连接的字符编码设置不正确。
解决方法:
import mysql.connector
config = {
'user': 'your_user',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
'charset': 'utf8mb4'
}
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
query = "SELECT * FROM mytable"
cursor.execute(query)
for row in cursor:
print(row)
cursor.close()
cnx.close()
领取专属 10元无门槛券
手把手带您无忧上云