免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4392 | 回复: 12
打印 上一主题 下一主题

xml编码和sed的小问题,不解中,求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-02 18:17 |只看该作者 |倒序浏览
本帖最后由 moonstrike 于 2011-06-02 20:46 编辑

现在有一大批xml文件要处理,文件都放在aix服务器上
这些文件在aix下用vi打开正常。

因为要用dom处理,目前是把文件下到本地(windows)后用java来处理
可是拿到本地后,不管用什么ftp方式传输,拿下来的文件,都会出现乱码,直接用ie打开xml是报错的。显示非正确的xml格式
准备在java读这个文件的时候加上编码utf-8来读,可是在ecliplse下这个文件显示就是错的,根本读不了。

很肯定是编码问题,
可是无从下手解决,

求教
-----------------------
目前用笨办法暂时解决了问题:

用记事本编辑,手动将xml文件头里的encoding="UTF-8" 修改成 GBK之后,文件都可以识别并读取了,

因为是大批量的文件,希望能有直接读取指定编码的方法,谢谢。

我在用sed进行批量替换的过程中,又出现灵异事件:
sed 's/UTF-8/GBK/g'  a.xml   >aa.xml
结果神奇地最后一行消失了,搞出来的xml文件都少了最后一个</tag>
这个,有人见过没?

----------------------------------
我来把问题整理下,乱七八糟的现在:
现在我有几百个xml文件,因为编码的问题,可能要手动把文件头的encoding 从uft-8改成gbk才能识别,
但是vi这个xml文件的时候vi有个报错,Last line is not complete
我估计正是这个原因,用sed来进行替换的时候,,前面改了没错,但读出来的新文件尾少了原来的最后一行,
试了试,手工在最后一行加一个换行之后,sed处理正常,但是这个文件实在太多了,手工可能得弄到下个月了。
有什么方法处理么?
坐等·~~~

论坛徽章:
0
2 [报告]
发表于 2011-06-02 19:53 |只看该作者
已经凌乱了,
反正这会儿还没人来,索性再挂上一个疑问,

这个sed对源文件的编码有选择么?
现在的情况 ,我感觉他根本就读不到最后一行的

论坛徽章:
0
3 [报告]
发表于 2011-06-02 20:05 |只看该作者
还有一点vi打开那个文件的时候,会报Last line is not complete

快疯了

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-06-03 00:00 |只看该作者
回复 1# moonstrike

first,   dos2unix all the xml files
then
try sed

hope it's helpful

论坛徽章:
0
5 [报告]
发表于 2011-06-03 08:50 |只看该作者
谢谢了,我现在是用sed出现的问题了。
昨天折腾很久,后来发现在aix的ksh环境下,一直有问题
换到linux的bsh环境下后没问题了
不解中。
还在研究sed怎么带参数进去了。

论坛徽章:
0
6 [报告]
发表于 2011-06-03 08:58 |只看该作者
for i in 1.xml 2.xml 3.xml;
do
sed '1s/UTF-8/GBK/g' $i > RET_$i;
done

这个一直报错,哪位帮看看,谢谢了
刚刚看sed不久,找不到门道啊。。郁闷

论坛徽章:
0
7 [报告]
发表于 2011-06-03 14:41 |只看该作者
我给你留言 了,方便加下QQ,传个文件来试试不

论坛徽章:
0
8 [报告]
发表于 2011-06-03 15:43 |只看该作者

好萧条
报告下进度吧,
目前用
sed -i 's/UTF-8/GBK/g' `grep UTF-8 -rl /usr/xml`
这个命令把目录下的文件都处理了,
不过shell还是不成~

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
9 [报告]
发表于 2011-06-03 15:58 |只看该作者
回复 6# moonstrike

貌似应该是:
  1. for i in `ls *.xml`;
  2. do
  3. sed '1s/UTF-8/GBK/g' $i > RET_$i;
  4. done
复制代码

论坛徽章:
0
10 [报告]
发表于 2011-06-03 16:13 |只看该作者
for 的这个方法倒没什么
主要是下面sed语句报错了,无法识别"s"什么的~~
没明白 ,
yinyuemi你试过你的语句么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP