文本内容编码转换

sh/bash/dash/ksh/zsh等Shell脚本
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

文本内容编码转换

#1

帖子 RegentW » 2008-06-30 21:25

我有几个10MB左右的文本文件,原来是Win下的GB2312,但在ubuntu下用gedit总是打不开,选什么编码都不行,所以就

代码: 全选

iconv -f GB2312 -t UTF-8 RMRB1.TXT -o RMRB1_utf8.TXT
但只向目标文件正确输出了一小部分,然后就报出错,信息是“iconv: 3903位置的非法输入序列”,请问这是什么意思啊
Core i5, 512G + SSD 20G, DDRIII 8G
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2008-06-30 21:27

用 GB18030
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#3

帖子 RegentW » 2008-06-30 21:36

BigSnake.NET 写了:用 GB18030
效果是一样的 :roll:
Core i5, 512G + SSD 20G, DDRIII 8G
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#4

帖子 xiooli » 2008-06-30 21:58

加-c参数试试。
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#5

帖子 RegentW » 2008-06-30 22:05

xiooli 写了:加-c参数试试。
忽略非法字符,输出的大小好像是对的,但输出的文件又打不开了
Core i5, 512G + SSD 20G, DDRIII 8G
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#6

帖子 BigSnake.NET » 2008-06-30 22:06

RegentW 写了:
xiooli 写了:加-c参数试试。
忽略非法字符,输出的大小好像是对的,但输出的文件又打不开了
干脆用 enconv 试试 ..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#7

帖子 RegentW » 2008-06-30 22:17

BigSnake.NET 写了:
RegentW 写了:
xiooli 写了:加-c参数试试。
忽略非法字符,输出的大小好像是对的,但输出的文件又打不开了
干脆用 enconv 试试 ..

代码: 全选

$ enca RMRB1.TXT
Unrecognized encoding
$ enconv RMRB1.TXT
enconv: Cannot convert `RMRB1.TXT' from unknown encoding
Core i5, 512G + SSD 20G, DDRIII 8G
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#8

帖子 BigSnake.NET » 2008-06-30 22:22

你那个文件编码有问题???

iconv -c 应该可以解决的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#9

帖子 RegentW » 2008-06-30 22:29

编码没问题啊,在windows下用写字板可以打开,没有错误
Core i5, 512G + SSD 20G, DDRIII 8G
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#10

帖子 windwiny » 2008-07-01 13:33

告诉你,用 gvim ,

一看到 gedit 就讨厌

把 set fileencodings=utf-8,ucs-bom,cp936,big5,euc-jp,euc-kr,latin1,default 这行加到 ~/.vimrc 里去,能自动检测文件编码

打开后 :se fe=utf-8 再保存就转成 utf8 了
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#11

帖子 RegentW » 2008-07-01 14:47

:shock:
谢楼上的建议,打开全部是乱码
Core i5, 512G + SSD 20G, DDRIII 8G
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#12

帖子 BigSnake.NET » 2008-07-01 14:54

代码: 全选

iconv -f GB18030 -t UTF-8 RMRB1.TXT -c
看出来的是什么
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#13

帖子 RegentW » 2008-07-01 15:00

BigSnake.NET 写了:

代码: 全选

iconv -f GB18030 -t UTF-8 RMRB1.TXT -c
看出来的是什么
这个能正确显示文件内容,谢BigSnake :)
接下来我试了

代码: 全选

$ iconv -f GB18030 -t UTF-8 RMRB1.TXT > RMRB1_utf8.TXT -c
输出文件还是打不开
Core i5, 512G + SSD 20G, DDRIII 8G
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#14

帖子 BigSnake.NET » 2008-07-01 15:01

-c 放前面.. > RMRB1_utf8.TXT 放最后

然后 enca RMRB1_utf8.TXT 看输出什么
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
RegentW
帖子: 1486
注册时间: 2007-02-27 21:47
来自: NN

#15

帖子 RegentW » 2008-07-01 15:05

代码: 全选

$ iconv -c -f GB18030 -t UTF-8 RMRB1.TXT -o RMRB1_utf8.TXT
$ enca RMRB1_utf8.TXT 
Universal transformation format 8 bits; UTF-8
  Surrounded by/intermixed with non-text data
Core i5, 512G + SSD 20G, DDRIII 8G
回复