使用UTF-8文件名上传文件问题

时间:2016-02-15 17:58:48

标签: batch-file utf-8 cmd

我希望使用Windows conmand提示将我的文件上传到FTP服务器。如果文件名不包含UTF-8字符,它可以正常工作。但如果它包含UTF-8字符而不上传到FTP服务。 我的test.bat:

<table>

输出:

@echo off

chcp 65001
echo >> %TMP%\ab.dat
echo user b12_17312633> %TMP%\ab.dat
echo 123456ab>> %TMP%\ab.dat
echo bin>> %TMP%\ab.dat
echo cd htdocs>> %TMP%\ab.dat

for /R %1 %%f in (*.txt) do (
    echo put "%%f">> %TMP%\ab.dat
    )

echo bye>> %TMP%\ab.dat
echo quit>> %TMP%\ab.dat
ftp -n -s:%TMP%\ab.dat ftp.byethost12.com
pause

我在“çtü.txt”上试了一下进行测试。 注意:我在Windows命令提示符下使用它。

1 个答案:

答案 0 :(得分:0)

  
      
  • -s:<FileName>指定包含ftp命令的文本文件。这些命令在ftp启动后自动运行。这个参数   不允许空格。使用此参数而不是重定向(&lt;)。
  •   
  • 注意即可。在Windows 8和Windows Server 2012或更高版本的操作系统中,文本文件必须以UTF-8
  • 编写   

FTP documentation 隐藏此文本文件必须使用BOM (字节顺序标记)写入UTF-8 ,但根据Unicode标准, BOM for UTF-8 files is not recommended

我将使用您的test.bat脚本的下一个改进:

@echo off
chcp 65001
powershell -command [System.IO.File]::WriteAllBytes("'%TMP%\ab.dat'", (0xEF,0xBB,0xBF))
echo user b12_17312633>> %TMP%\ab.dat
rem … the script continues here

其中powershell调用使用UTF-8 BOM创建ab.dat文件,即使用初始/前导字节序列0xEF0xBB0xBF