gpt4 book ai didi

python - 存储到 MySQL 数据库时,非 Unicode 字符会更改为 "????"

转载 作者:行者123 更新时间:2023-11-30 00:10:02 25 4
gpt4 key购买 nike

我正在围绕从 Twitter REST API 获取的推文创建一个 Web 应用程序。我遇到一个问题,在 python 控制台中打印时,韩语、中文和其他亚洲语言等非 unicode 字符可以正确显示,但是当我将其存储到 SQL 数据库时,字符串值会更改为“??????” ???”或类似的东西。

我正在使用 Twython 模块,这是我用于获取推文的代码,它工作正常,当我打印推文时,它会正确显示这些字符

from twython import Twython
import json
APP_KEY= 'abcdfefdags'
APP_SECRET = 'abcdefghdfa'
SEARCH_QUERY='russia'
SEARCH_COUNT= 3
twitter = Twython(APP_KEY, APP_SECRET, oauth_version=2)
ACCESS_TOKEN = twitter.obtain_access_token()
twitter1 = Twython(APP_KEY, access_token=ACCESS_TOKEN)

def getTweetQuery():
return SEARCH_QUERY

def getTweetTextDict():
tweetTempList = []
data = []
listOfTweets = dict()
data = twitter1.search(q=SEARCH_QUERY, count=SEARCH_COUNT)
for x in range(0,SEARCH_COUNT):
tweetData = dict()
s = (data['statuses'][x]['text'])
tweetData['text'] = s
s = (data['statuses'][x]['created_at'])
tweetData['created_at'] = s
s = (data['statuses'][x]['user']['name'])
tweetData['name'] = s
s = (data['statuses'][x]['user']['profile_image_url'])
tweetData['profile_image_url'] = s
listOfTweets[x] = tweetData
return listOfTweets

这是我将它们存储到 SQL 数据库时的代码

import mysql.connector
from firstsite.website import twit
class SQLDataSystem:
def insertNewTweets(self):
cnx = mysql.connector.connect(user='djangouser', password='1234',
host='127.0.0.1',
database='django_db')

cursor = cnx.cursor()
dataPacket = twit.getTweetTextDict()

dataPacketLength = len(dataPacket.keys())
for x in range (0, dataPacketLength):
tweet = dataPacket[x]['text']
tweetTime = dataPacket[x]['created_at']
twitterName = dataPacket[x]['name']
twitterPicture = dataPacket[x]['profile_image_url']
add_tweet = ("INSERT INTO website_tweets " +
"(tweet, tweetTime, twitterName, twitterPicture) "+
"VALUES (%s, %s, %s, %s)")
arguments = (tweet, tweetTime, twitterName, twitterPicture)
cursor.execute(add_tweet, arguments)
cnx.commit()

当我通过

检查数据库时
SELECT * FROM website_tweets;

以及通过Python检索并打印它,一个可能已经说过的字符串'@nytvideo @@KOREA:왜 테러리스트들은 구속하지 않나요??'变成'@nytvideo @@韩国:? ? ?????? ???? ????'我该如何解决这个问题?

最佳答案

需要检查的三件事是:

  1. 数据库的排序规则 - 您需要它是 UTF8,而不是 Latin1 或其他内容。
  2. 在连接本身中 - use_unicode=True
  3. 确保您的 unicode 字符串不会意外转换为普通字符串(格式化往往会发生这种情况)

关于python - 存储到 MySQL 数据库时,非 Unicode 字符会更改为 "????",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com