首页 > 解决方案 > Mysqldump 将外来字符替换为 utf8mb4 数据库

问题描述

我环顾了谷歌并阅读了 SO 中的其他一些主题,但到目前为止,没有任何建议对我有用。

这是我的数据库的设置:

character_set_client        utf8mb4
character_set_connection    utf8mb4
character_set_database      utf8mb4
character_set_filesystem    binary
character_set_results       utf8mb4
character_set_server        latin2
character_set_system        utf8 
ft_query_extra_word_chars   OFF

我有一个db_dump.sh包含这一行的小文件:

TABLELIST_WITH_DATA="
lc_users
lc_history
lc_feedback
"

HOST=sql.myserver.com

PRO=lc_current
DEV=lc_development
STG=lc_staging

ENV=$1
ENV_L=$(echo "$1" | awk '{print tolower($0)}')

FILENAME_DATA=data_$ENV_L.sql

mysqldump -h ${HOST} -u ${!ENV} -p --default-character-set=latin1 --no-create-info --skip-triggers --hex-blob --skip-set-charset ${!ENV} ${TABLELIST_WITH_DATA} > $FILENAME_DATA

我尝试设置不同的字符集

--default-character-set=ut8
--default-character-set=utf8mb4

或删除--skip-set-charset

我所有的尝试仍然产生带有 � 的字符串,而不是正确的重音字符或来自不同字母的字母。似乎没有任何效果,因此欢迎任何想法!

尝试在 MySQL Workbench 中打开此文件时,出现此错误:

在此处输入图像描述

选择latin1会打开文件,但带有类似的字符³êñ¼¶

选择utf8mb4显示另一个错误: 在此处输入图像描述

最后,如果我选择 UTF-8,则会出现错误: 在此处输入图像描述

标签: mysqlcharacter-encoding

解决方案


推荐阅读