我有UTF-8俄语字符,我尝试从新文件复制 但结果是胡言乱语的人物。 源文件可以打开,在vim中看起来很好。 这是我脚本的一部分,
# this is how i found in the internet to convert file to utf-8
set new_file_full_path = "/home/foo/env/output/test.csv"
set f = "/home/foo/env/source/source_test.txt"
if( ! -e $new_file_full_path ) then
touch $new_file_full_path
iconv -f latin1 -t utf8 $new_file_full_path
endif
set new_line_buffer = ""
foreach line("`cat $source_dir/$f`")
#echo $line
if( $i > 14 ) then
echo "about to append to file"
echo $new_file_full_path
echo $line >> $new_file_full_path
echo "done append to file"
endif
@ i = $i + 1
end
我认为部分问题出在我做的时候:
目标文件
file -i /home/foo/env/output/test.csv
/home/foo/env/output/test.csv: text/plain; charset=unknown-8bit terminators
和源文件
file -i /home/foo/env/source/source_test.txt
text/plain; charset=utf-8
正如您所见,即使我尝试转换目标文件后,目标文件也不是utf-8文件
答案 0 :(得分:0)
请注意,如果要在源文件和目标文件中保留UTF-8,则不需要iconv
。
iconv -f latin1 -t utf8 $new_file_full_path
此处您要求将从 latin1 转换为文件/home/foo/env/output/test.csv
的UTF-8,结果将显示在stdout
中没有指定输出文件。
我认为你想要的东西是:
iconv -f utf8 -t latin1 $f -o $new_file_full_path
将您的源文件$f
设置为UTF-8,然后在$new_file_full_path
中获取latin1中的转换,如果它是您想要的。