Python 如果我知道只使用拉丁-1字符,是否可以将UTF8编码字符插入拉丁-1表格?
我在一个数据库中有10个表。其中9个仅使用拉丁语1支持的标准ascii 1字节字符存储数据。其中1个要求我存储仅受UTF8支持的特殊字符。我想使用相同的MySQL连接对象(使用Python的PyMySQL库)来填充所有10个表 以前,在创建MySQL连接对象时,我没有指定字符集,它默认为Latin-1。当我只填充9个拉丁-1表时,这很好。现在填充UTF8表,通过将参数charset='utf8mb4'传递给PyMySQL连接对象函数,修改了连接对象:Python 如果我知道只使用拉丁-1字符,是否可以将UTF8编码字符插入拉丁-1表格?,python,mysql,utf-8,Python,Mysql,Utf 8,我在一个数据库中有10个表。其中9个仅使用拉丁语1支持的标准ascii 1字节字符存储数据。其中1个要求我存储仅受UTF8支持的特殊字符。我想使用相同的MySQL连接对象(使用Python的PyMySQL库)来填充所有10个表 以前,在创建MySQL连接对象时,我没有指定字符集,它默认为Latin-1。当我只填充9个拉丁-1表时,这很好。现在填充UTF8表,通过将参数charset='utf8mb4'传递给PyMySQL连接对象函数,修改了连接对象: # Connect to the datab
# Connect to the database
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
现在我确信,当插入我的UTF8 MySQL表时,我的所有数据都存储得很好。但是,我不确定在使用我的UTF8连接对象并将其插入Latin-1表时是否会出现问题。在我的第一轮测试之后,一切看起来都很棒
有什么我忽略了的吗?在拉丁-1表中插入UTF8编码字符是否存在任何潜在问题 Hi utf8和latin 1都是简单的编码,它们支持某些字符,但这两个字符都不包含,因此可能会出现问题。如果您传递的utf8数据不是拉丁语1。在此过程中,对occour进行双重编码。
是一个将utf8插入拉丁语的链接。Hi utf8和拉丁语1都是简单的编码,它们支持某些字符,但这两个字符中都不包含,因此可能会出现问题。如果您传递的utf8数据不是拉丁语1。在此过程中,对occour进行双重编码。
是一个将utf8插入拉丁语的链接可以这样做。但是你必须正确设置一些东西,否则你会得到任何形式的垃圾 如果客户端中的字节是UTF-8编码的,那么必须告诉MySQL这一事实。这通常在连接字符串上完成。您的
charset='utf8mb4'
连接参数就是这样做的。以下是一些特定于Python的提示:
同时,表中的列可以是latin1或utf8(因为您可以确定数据仅限于它们之间常见的字符)
一个字符示例:ee
在拉丁语中是hexE9
,在MySQL的utf8(或utf8mb4)中是C3A9
。如果正确说明客户端编码,则转换将在插入和选择过程中进行
(出于您的目的,utf8和utf8mb4都可以工作。)
如果您还有其他问题,请参阅和/或提供
SHOW CREATE TABLE
和一些有问题的字符的十六进制。可以这样做。但是你必须正确设置一些东西,否则你会得到任何形式的垃圾
如果客户端中的字节是UTF-8编码的,那么必须告诉MySQL这一事实。这通常在连接字符串上完成。您的charset='utf8mb4'
连接参数就是这样做的。以下是一些特定于Python的提示:
同时,表中的列可以是latin1或utf8(因为您可以确定数据仅限于它们之间常见的字符)
一个字符示例:ee
在拉丁语中是hexE9
,在MySQL的utf8(或utf8mb4)中是C3A9
。如果正确说明客户端编码,则转换将在插入和选择过程中进行
(出于您的目的,utf8和utf8mb4都可以工作。)
如果您还有其他问题,请参阅和/或提供
SHOW CREATE TABLE
和某些违规字符的十六进制。但我的拉丁语-1表格将永远不会包含任何特殊字符。这仍然是一个问题吗?这些表格中存储的唯一字符是英语字母表中的26个标准字母和数字0-9。是的,你可以使用它,但我的拉丁-1表格中永远不会包含任何特殊字符。这仍然是一个问题吗?这些表格中存储的唯一字符是英语字母表中的26个标准字母和数字0-9。是的,你可以使用它