首页 > 解决方案 > Powershell编码后如何转换postgresql转储?

问题描述

我在 Windows Server 2019 计划作业上使用

powershell & 'C:\Program Files\PostgreSQL\12.3-7.1C\bin\pg_dump.exe' basename > bn.bak

之后我尝试在其他基础上导入 bn.bak,但 Postgre 告诉我

“用于编码“UTF8”的无效字节序列:0xff”

文件实用程序给了

Little-endian UTF-16 Unicode 文本,带有 CRLF 行终止符

因此,我了解 Powershell 5.1 使用“>”作为输出文件并使用默认编码 UTF-16LE。但是如何在我的基础上导入该文件?我试过这种方法:

  1. iconv -f UTF-16LE -t UTF-8 bn.bak -o conv1.bak
  2. 获取 Powershell 7.0 并使用“Get-Content .\bn.bak -Encoding utf8NoBom”

在此处输入图像描述

但所有这些方式给了我同样的东西——所有拉丁符号和数字显示正常,所有西里尔符号显示破裂。

这个转储还能保存吗?:)

标签: postgresqlpowershellcharacter-encoding

解决方案


整天面对同样的问题;有一个简单的技巧。

在记事本++中打开文件转到编码并将其更改为UTF8并保存。文件大小现在应该减半。这对我有用。

我尝试使用以下命令进行 UTF8 导出:

.\pg_dump.exe -U postgres -h remotehost -d dbName --encoding utf8 > "C:\Users\me\Documents\project\Migration\backup.sql"

但这并没有按我的预期工作。


推荐阅读