gpt4 book ai didi

mysql - 数据库/服务器设置传输期间波兰字符集出现编码错误

转载 作者:行者123 更新时间:2023-11-29 12:00:42 25 4
gpt4 key购买 nike

我正在尝试将我的一个数据库从一台主机(home.pl)传输到另一台主机(我新设置的服务器)。我试图传输的脚本是wordpress。不幸的是,无论使用哪种方法,我都在努力解决编码问题。

新主机配置

在我的新服务器中,我在 my.cnf 中使用以下指令:

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_general_ci
character-set-server = utf8
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'

[client]
default-character-set=utf8

我的 mySQL 变量:

character_set_client    utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci

新服务器上的 Php.ini:

; PHP's default character set is set to UTF-8.
; http://php.net/default-charset
default_charset = "UTF-8"

旧主机配置

我已经在我的旧主机中运行了 SHOW VARIABLES,我试图从中传输数据库,并得到以下结果:

character_set_client    utf8
character_set_connection utf8mb4
character_set_database utf8
character_set_results utf8
character_set_server latin2
character_set_system utf8
/usr/local/pssql55/share/charsets/
collation_connection utf8mb4_general_ci
collation_database utf8_polish_ci
collation_server latin2_general_ci

已尝试传输方法

1)通过phpmyadmin转账

我尝试过使用 PHPMYADMIN 导出/导入。特别是,我在通过 phpmyadmin 导出和导入期间都指出 UTF-8 作为文件字符集。

在源服务器和新主机上的 phpmyadmin 中,奇怪的是我没有看到波兰字符(输出与没有波兰字符的情况相同)。

2) 通过 mysql dump 导出/导入

我也尝试过使用:

 mysqldump -h OLD_HOST -u OLD_USER -p DB | mysql -h localhost -u root NEW DATABASE

但是编码也失败。

也尝试使用编码变量,但也失败了:

 mysqldump --default-character-set=latin1  | mysql --default-character-set=utf8 

转储文件

在使用带有 UTF-8 编码集的程序员记事本的转储文件中,字符如下所示:

"Ä" instead of "ę"

在 Microsoft Word 中打开它们,我看到了

Ä™ instead of "ę"

编码转换器 (gżegżółka) 识别出该文件位于:C:\Users\mkondej001\Desktop\14271425_mk.sql

Kodowanie: Unicode UTF-8
EOL: LF (Unix)

有任何关于如何正确传输数据库/设置服务器变量的线索吗?

最佳答案

最后我发现问题是由于我原来的服务器上的数据写入SQL的方式不正确。

我最终使用以下方法传输数据库:

mysqldump --default-character-set=utf8 [ORYGINAL_DB] | mysql [TARGET_DB] --default-character-set=utf8

和执行:

UPDATE [table name] SET [field] = CONVERT(BINARY CONVERT([field] USING latin2) USING utf8)

因为这是这里的建议:

strange character encoding of stored data , old script is showing them fine new one doesn't

希望上述解决方案对其他人也有帮助。

关于mysql - 数据库/服务器设置传输期间波兰字符集出现编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32424198/

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