c - 为什么 iconv 命令输出到同一个文件被截断?

标签 c linux bash iconv

现在我有一些 euc-jp 编码的文件需要转换为 utf-8 编码。 所以我在 bash 中使用 iconv 命令:

iconv foo.c -f euc-jp -t utf-8 -o foo.c

但是出现了一个问题,它说:

/usr/bin/iconv: illegal input sequence at position 30211

并且文件被截断到一定大小(32 ~ 33KB)。

但令人困惑的是如果我使用

iconv foo.c -f euc-jp -t utf-8               # output to STDOUT
iconv foo.c -f euc-jp -t utf-8 -o foo.c.utf8 # output to a new file

它运行良好。

所以我想这可能与 BUFFER 有关,有人可以向我解释一下吗?

最佳答案

在没有同步的情况下读取和写入同一个文件?不,这不是一个好主意。文件会被弄乱。

为了不损害数据并且不产生垃圾,试试这个:

cp foo.c temp.input; iconv temp.input -f euc-jp -t utf-8 -o foo.c;rm temp.input;

关于c - 为什么 iconv 命令输出到同一个文件被截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872302/

相关文章:

c - exec() 不适用于 Firefox

linux - 在 Linux 中使用 WebSphere MQ 的默认 CCSID 连接到 Windows 中的客户端应用程序

bash - Shell 变量串联

用于具有图像列表刷新功能的幻灯片放映的 Bash 脚本

arrays - Bash:从另一个数组中删除一个数组中存在的项目

c - 为什么要在结构体之前添加标识符?我不明白为什么,如何解决这个问题?

c - Linux 模块 : performance counter does not work

c - 如何在 C 的正弦函数中输入大于 122.409 的角度

java - 什么会导致 java 进程大大超过 Xmx 或 Xss 限制?

linux - 如何删除所有不以特定格式结尾的文件?