Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 从UTF-16BE到UTF-8的iconv转换为类似中文的字符_Unix_Utf 8_Utf 16_Iconv - Fatal编程技术网

Unix 从UTF-16BE到UTF-8的iconv转换为类似中文的字符

Unix 从UTF-16BE到UTF-8的iconv转换为类似中文的字符,unix,utf-8,utf-16,iconv,Unix,Utf 8,Utf 16,Iconv,我在Linux服务器上有1000多个sql文件,采用UTF-16BE编码。PostgreSQL实例的服务器编码为UTF-8,不应更改。我尝试使用下面的命令转换其中一个文件,它转换得很好 iconv -f UTF-16BE -t UTF-8 file_0001.sql -o file_0001.sql 但是当我循环这个脚本来转换文件夹中的所有文件时,所有的脚本都被转换成了类似中文的语言 for file in *; do if [ -f "$file" ]; th

我在Linux服务器上有1000多个sql文件,采用
UTF-16BE
编码。PostgreSQL实例的服务器编码为
UTF-8
,不应更改。我尝试使用下面的命令转换其中一个文件,它转换得很好

iconv -f UTF-16BE -t UTF-8  file_0001.sql -o file_0001.sql
但是当我循环这个脚本来转换文件夹中的所有文件时,所有的脚本都被转换成了类似中文的语言

for file in *; do 
    if [ -f "$file" ]; then 
        iconv -f UTF-16BE -t UTF-8  "$file" -o "$file"
    fi 
done

有人能帮助你正确地转换它们吗。提前感谢。

iconv无法读取和写入同一文件。你确定这是你正在执行的真正命令吗?@Codo,是的,这是我执行的命令。谢谢,我将尝试将输出发送到另一个文件。@Codo感谢它的工作。除了编码之外的任何文件类型转换都是这种情况吗?一般来说,unix命令行工具不能读取和写入同一个文件。它们通常是流式的(读/处理/写,而在内存中保存很少)。为了读取和写入同一个文件,该工具必须将所有内容加载到内存中,进行处理,然后进行写入。或者它需要创建额外的临时文件,并在最后重命名。这不是构建unix工具的典型方式。假设输入和输出可能是附加处理的管道。