小编典典

将包含混合编码类型的Postgresql数据库从SQL_ASCII转换为UTF-8

sql

我有一个Postgresql数据库,我想转换为UTF-8。

问题在于当前使用的是SQL_ASCII,因此尚未对其输入进行任何形式的编码转换,因此最终在表中混合了多种编码类型的数据。一行可能包含编码为UTF-8的值,另一行可能是ISO-8859-x或Windows-125x等。

这使得执行数据库转储并将其转换为UTF-8(以将其导入到新的UTF-8数据库中)变得很困难。如果数据全部是一种编码类型,那么我可以通过iconv运行转储文件,但是我认为这种方法在这里行不通。

从根本上讲,问题是否在于了解每个数据的编码方式?在这里,未知的地方是否可以解决,甚至可以猜测?理想情况下,我会喜欢一个脚本,该脚本可以接收一个文件,任何文件,并吐出有效的UTF-8。


阅读 264

收藏
2021-04-07

共1个答案

小编典典

正是 问题是编码::
FixLatin
被写入解决*。

如果安装Perl模块,则还将获得fix_latin命令行实用程序,您可以像这样使用它:

pg_restore -O dump_file | fix_latin | psql -d database

阅读文档的“限制”部分以了解其工作原理。

[*]注意,我假设您说ISO-8859-x时表示ISO-8859-1,而当您说CP125x时表示CP1252-因为ASCII,UTF-8,Latin-1和WinLatin-1混合使用是很常见的情况。但是,如果您确实确实混用了东西方编码,那么对不起,但您被搞砸了:-(

2021-04-07