需要批量将大量文本文件从ANSI格式转换为Unicode格式。

3
我有很多不同大小(从几KB到1GB+)的ANSI文本文件,需要转换为Unicode。
目前,这是通过将文件加载到记事本中,然后执行“另存为...”并选择Unicode作为编码来完成的。显然,这非常耗时!
我正在寻找一种在Windows中一次性转换所有文件的方法。这些文件位于一个目录结构中,因此需要能够遍历整个文件夹结构并转换其中的所有文件。
我已经尝试了一些选项,但迄今为止没有真正满足所有要求的选项:
  • ansi2unicode 命令行实用程序。它是最接近我所需的,因为它可以递归处理文件夹结构…但在转换过程中经常崩溃,无法完成转换。
  • CpConverter GUI 实用程序。在某种程度上可以处理,但对于文件夹结构中的多个文件会有困难 - 似乎只能处理一个文件夹中的文件
  • 有一个DOS 命令, 可以处理较小的文件,但似乎无法处理大文件。
  • 尝试了GnuWin sed 实用程序, 但每次安装都会崩溃。

所以我还在寻找解决方案!如果有人有任何建议,我将非常感激

谢谢...


1
"ANSI" 不是一种编码方式。您需要知道文件的编码方式才能进行操作。 - R. Martinho Fernandes
如果你在记事本中执行“另存为...”操作,它会在“编码”下拉菜单中列出ANSI - 我只是在提到这个。 - user2724502
2个回答

5

好的,如果其他人也感兴趣,我发现可以使用PowerShell来实现:

Get-ChildItem "c:\some path\" -Filter *.csv -recurse | 
    Foreach-Object {
    Write-Host (Get-Date).ToString() $_.FullName
    Get-Content $_.FullName | Set-Content -Encoding unicode ($_.FullName  + '_unicode.csv')
}

该代码通过递归整个文件夹结构并将所有CSV文件转换为Unicode来实现;转换后的文件将写入与原始文件相同的位置,但文件名末尾会添加“unicode”。如果您想要转换为其他编码(例如utf-8),可以更改“-Encoding”参数的值。
此外,它还输出了所有已转换文件的列表,并附带时间戳。

0
当我将个人网站转移到iPad上时,每个HTML文件都出现了一些奇怪的字符。iPad服务器有另一个文件系统。我不得不将数百个HTML和JE文件从ANSI转换为UTF16 LE。
这个PowerShell片段在我完全不了解PowerShell的情况下节省了我很多时间。简单的复制/粘贴方法足以运行脚本。
我添加了删除和重命名项目的命令以满足我的需求(这是我在Liberty Basic中使用的重命名和删除的方法)。
我会小心保管它。
谢谢。

你是不是想评论这个答案? - undefined
是的。我做错了什么?我是不是添加了一个回答,而不是评论回答? - undefined
那就是你所做的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接