Unix 从UTF-16BE到UTF-8的iconv转换为类似中文的字符
我在Linux服务器上有1000多个sql文件,采用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
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工具的典型方式。假设输入和输出可能是附加处理的管道。