命令行查找替换XLF文件内容后特殊字符变为问号问题求助
问题原因
- 使用
ASCII编码输出时,ASCII字符集不支持中文字符,所有中文会被替换为问号 - 移除编码参数后,PowerShell默认读写编码不匹配:读取UTF-8编码的源文件时解码正确,但写入时使用了系统默认的ANSI编码,导致中文显示为乱码字符
解决方案
你可以直接将runner.bat的内容替换为如下单条命令,一次性完成替换且避免乱码:
powershell -Command "(gc -Encoding UTF8 input.xlf) -replace '<', '<' -replace '>', '>' | Out-File -Encoding UTF8 output.xlf"
如果你的xlf文件要求使用无BOM的UTF-8编码(符合多数XML文件规范,Windows PowerShell 5.1版本默认输出的UTF-8带BOM),可以使用以下兼容写法:
powershell -Command "$content = (gc -Encoding UTF8 input.xlf) -replace '<', '<' -replace '>', '>'; [IO.File]::WriteAllText('output.xlf', $content, [System.Text.UTF8Encoding]::new($false))"
调整说明
- 读取文件时显式指定
-Encoding UTF8,保证源文件的中文字符被正确解码 - 合并两次替换操作为单步,避免多次读写文件引入的编码错误
- 写入文件时显式指定UTF-8编码,保证中文字符被正确存储
内容的提问来源于stack exchange,提问作者Owen Kelvin
相关产品推荐
相关产品推荐

