首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Windows中批量将cp1252转换为utf-8

在Windows中批量将cp1252转换为utf-8
EN

Stack Overflow用户
提问于 2012-03-14 00:00:03
回答 4查看 4.1K关注 0票数 4

因此,我一直在尝试使用我在网上找到的技巧和trix,特别是here,在Windows中将一个大型的java源码树从cp1252转换为UTF-8。问题是,我使用的是Windows;我不使用VB;Cygwin的iconv没有使用-o开关。

我第一次尝试使用的代码行是:

代码语言:javascript
运行
复制
find . -type f -print -exec iconv -f cp1252 -t utf-8 {} > {}.converted \; -exec mv {}.converted {} \;

这会在工作目录中创建一个文件{}.converted,第二个-exec会因为显而易见的原因而失败。

在iconv表达式两边加引号:

代码语言:javascript
运行
复制
find . -type f -print -exec 'iconv -f cp1252 -t utf-8 {} > {}.converted' \; -exec mv {}.converted {} \;

导致以下错误:

代码语言:javascript
运行
复制
find: `iconv -f cp1252 -t utf-8 ./java/dv/framework/activity/model/ActivitiesMediaViewImpl.java > ./java/dv/framework/activity/model/ActivitiesMediaViewImpl.java.converted': No such file or directory

尽管手工执行单个表达式的效果很好。

我已经尝试了随机引用,但似乎什么都不起作用,我错过了什么?为什么它不工作..?

提前谢谢你,拉斯

EN

回答 4

Stack Overflow用户

发布于 2012-03-14 00:08:29

代码语言:javascript
运行
复制
for f in `find . -type f`; do
    iconv -f cp1252 -t utf-8 $f > $f.converted
    mv $f.converted $f
done
票数 3
EN

Stack Overflow用户

发布于 2012-03-14 16:56:50

好了,再次回答我自己的问题(这开始成为一种坏习惯……)

尽管Neevek的解决方案没有什么问题,但我内心的完美主义者希望find -exec表达式是正确的。将iconv语句包装在sh -c '...'中可以做到这一点:

代码语言:javascript
运行
复制
find . -type f -print -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.converted' \; -exec mv {}.converted {} \;

尽管如此,为什么在find -exec语句中使用i/o重定向会出现问题的根本问题仍然没有解决……

票数 1
EN

Stack Overflow用户

发布于 2012-03-14 00:10:06

我不经常使用Cygwin,但有一个我一直在使用的“原生”windows版本的Iconv。下面是一个批处理文件的摘录,我使用该文件将子目录中的所有文件从HP-ROMAN8编码转换为UTF-8编码--将结果‘./temp’放在原始文件下:

@设置dir=original

@set ICONV="C:\Program Files (x86)\iconv-1.9.2.win32\bin\iconv“

if EXIST .\%dir%\temp ( erase .\%dir%\temp*.* /Q @if ERRORLEVEL 1 (@echo Unable to erase the "temp“子目录@goto THE_END )) else ( mkdir .\%dir%\temp @if ERRORLEVEL 1 (@echo Unable to create the "temp”子目录@goto THE_END ))

for %%f IN (./%dir%/*.xml) do (%ICONV%-f HP-ROMAN8 -t UTF-8 "./%dir%/%%f“> "./%dir%/temp/%%f”if ERRORLEVEL 1 (goto ICONV_ERROR) )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9687594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档