0

我经常更新服务器上的数据库,并从命令行运行以下行:

mysqldump -u root --password=mypass mydb|mysql -h mysite.cc -u remotusr --password=remotpsw remotdb

问题是它会一路丢失 UTF 字符。

如何将 utf 字符保存在 cmd 中,或者这样做有什么更好的做法?

4

1 回答 1

1

(升级到答案)

mysqldump— 数据库备份程序中所述

[ deletia ]

因此,除非您在选项文件中有覆盖这些默认值的设置(您可以指定--no-defaults以确保它们不是),否则输出mysqldump应该能够被重定向到另一个mysql会话而不会丢失 Unicode 字符。

相反,在从新数据库中检索和显示您的数据时,似乎发生了向较小字符集的转换。由于您为此目的使用 PHP 的原始 MySQL API,尽管在其手册章节的介绍中(如下)有警告,您应该使用mysql_set_charset()来设置连接字符集。

不建议将此扩展用于编写新代码。相反,应该使用mysqliPDO_MySQL扩展。在选择 MySQL API 时,另请参阅MySQL API 概述以获得更多帮助。

于 2012-09-04T17:30:08.957 回答