当C:\א\Toc1.dump
向pgadmin 的备份工具,它在后台重现了C:\\0F04~1\\TOC1.DUMP
屏幕截图中的编码路径:
当我从 Windows cmd 或 PowerShell 触发时,pg_dump.exe
使用非英语字符路径引用它总是会失败:
pg_dump.exe --file "C:\\א\\TOC1.DUMP" ... Not Working!
pg_dump 工具告诉它找不到路径:
pg_dump:[自定义归档器] 无法打开输入文件“...”
但是当我使用编码路径触发 exe 时,它可以正常工作:
pg_dump.exe --file "C:\\0F04~1\\TOC1.DUMP" ... //--WORKS!!
因此,我尝试通过代码使其工作,并且我需要弄清楚在将参数传递给 pg_dump.exe 时如何正确地对路径进行编码。
我的问题:Windows 如何编码路径? 它是怎么想出来0F04~1
的א
?
按照此问题,有人告诉我它pgadmin
本身不进行编码,这是 Windows 所持有的东西。
答案1
两者都有。看来您使用的工具不使用支持 Unicode 的 Windows API。有效的路径是 8.3 路径。它是为了与不支持长文件名的 DOS 应用程序兼容而创建的。
您可以使用以下方式查看它dir /x
:
05.01.2022 19:51 <DIR> 0F04~1 א
(请注意,א 在命令提示符中显示为一个带有问号的框。)
是否启用 8.3 名称创建是每个卷的属性。默认情况下,它在系统卷上启用。
因为反斜杠是 Windows 中的路径分隔符,所以不是转义字符,不需要像您那样重复。这适用于命令提示符和 PowerShell。