gpt4 book ai didi

从 Latin-1 到 UTF-8 的 MySQL 编码

转载 作者:行者123 更新时间:2023-11-30 21:59:59 31 4
gpt4 key购买 nike

很长一段时间以来,当我尝试使用 LIKE 选择匹配的字符串时,我的 Django Web 应用程序数据库中的 Latin-1 编码导致了这个错误:

 -- UnicodeEncodeError:'latin-1' codec can't encode character--

我已经尝试了所有解决方案,从在连接中设置 (charset='utf8') 到在之前应用 cursor.execute("set names 'utf8'")我的实际查询,但没有接缝工作。

直到我看到这篇博文:https://www.whitesmith.co/blog/latin1-to-utf8/关于编码问题,这与我遇到的问题相同,因为当我查看 phpMyAdmin 时,看到默认情况下我的 DB i Latin-1 编码:

chatbot_brain=>utf8_general_ci
information_schema=>utf8_general_ci
Total: 2=> latin1_swedish_ci

因此,解决方案是转储数据库并更改模式文件中的描述:

 # Login into your future database host to create a new database with an UTF-8 charset 
$ mysql -h FUTURE_HOST -u FUTURE_USER -p
mysql> CREATE DATABASE `FUTURE_DB` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
# Flush the current database schema on the future host, replacing all CHARSET=latin1 occurrences along the way
mysqldump -h CURRENT_HOST -u CURRENT_USER -p CURRENT_DB --no-data --skip-set-charset --default-character-set=latin1 \
| sed 's/CHARSET=latin1/CHARSET=utf8/g' \
| mysql -h FUTURE_HOST -u FUTURE_USER -p FUTURE_DB --default-character-set=utf8
# Flush the current database data on the future host
mysqldump -h CURRENT_HOST -u CURRENT_USER -p --no-create-db --no-create-info --skip-set-charset --default-character-set=latin1 CURRENT_DB \
| mysql -h FUTURE_HOST -u FUTURE_USER -p FUTURE_DB --default-character-set=utf8

现在我知道问题所在和解决方案是什么,但我的问题是如何应用于我的 Django 项目——我是否必须使用我的计算机终端和 SSH session ,或者是否有任何应用程序?

这是我在 phpmyAdmin 中的数据库的屏幕截图:

https://ibb.co/dDu7D5

谢谢

PS(我用的是Django10,Python3.5,Mysql,Webfaction sherd host)

最佳答案

Trouble with utf8 characters; what I see is not what I stored 中的“最佳实践”开始

检查 Python 中的不正确设置:http://mysql.rjweb.org/doc.php/charcoll#python

希望两步 mysqldump 会起作用。

加载后,使用第一个链接中的“测试数据”检查一些数据。 (SELECT HEX(col)...)

关于从 Latin-1 到 UTF-8 的 MySQL 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43709337/

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