使用PERL将BOM插入CSV文件

使用PERL将BOM插入CSV文件,perl,csv,byte-order-mark,Perl,Csv,Byte Order Mark,嗨,我有一个问题,使我的CSV文件可读。 我目前正在尝试使用PERL来实现它。以下是我的代码行: #!/usr/bin/perl $infile = @ARGV[0]; $outfile = @ARGV[1]; open(INFILE,"$infile") || die "cannot open input file : $infile : "; open(OUTFILE,">$outfile") || die "cannot open output file"; $/="unde

嗨,我有一个问题,使我的CSV文件可读。 我目前正在尝试使用PERL来实现它。以下是我的代码行:

#!/usr/bin/perl

$infile = @ARGV[0];
$outfile = @ARGV[1];

open(INFILE,"$infile") || die "cannot open input file : $infile : ";

open(OUTFILE,">$outfile") || die "cannot open output file";

$/="undef";

while(<INFILE>)

{

  $temp=$_;

}

close(INFILE);

  print OUTFILE "\x{feff}".$temp;

close(OUTFILE);
#/usr/bin/perl
$infle=@ARGV[0];
$outfile=@ARGV[1];
打开(infle,“$infle”)| | die”无法打开输入文件:$infle:;
打开(OUTFILE,“>$OUTFILE”)| | die“无法打开输出文件”;
$/=“未定义”;
while()
{
$temp=$\ux;
}
关闭(填充);
打印输出文件“\x{feff}”。$temp;
关闭(输出文件);
但是,CSV文件仍然无法读取。 我可以做些什么来插入BOM表吗?
谢谢

我认为您需要在代码顶部添加类似的内容:

use open OUT => ':encoding(UTF-16)';

我认为在代码的顶部需要这样的内容:

use open OUT => ':encoding(UTF-16)';

我认为在代码的顶部需要这样的内容:

use open OUT => ':encoding(UTF-16)';

我认为在代码的顶部需要这样的内容:

use open OUT => ':encoding(UTF-16)';

您可能想要做的,而不是手动插入BOM表,是

此外:

  • 您正在将输入记录分隔符设置为文本字符串
    “unde”
    ,这绝对不是您想要的!(尽管只要输入文件中不出现undef,它就可以正常工作)。删除那里的引号
  • 使用警告;严格使用

您可能想做的,而不是手动插入BOM,是

此外:

  • 您正在将输入记录分隔符设置为文本字符串
    “unde”
    ,这绝对不是您想要的!(尽管只要输入文件中不出现undef,它就可以正常工作)。删除那里的引号
  • 使用警告;严格使用

您可能想做的,而不是手动插入BOM,是

此外:

  • 您正在将输入记录分隔符设置为文本字符串
    “unde”
    ,这绝对不是您想要的!(尽管只要输入文件中不出现undef,它就可以正常工作)。删除那里的引号
  • 使用警告;严格使用

您可能想做的,而不是手动插入BOM,是

此外:

  • 您正在将输入记录分隔符设置为文本字符串
    “unde”
    ,这绝对不是您想要的!(尽管只要输入文件中不出现undef,它就可以正常工作)。删除那里的引号
  • 使用警告;严格使用

在我们这样做之前,让我告诉你,在大多数情况下,bom是一种难以置信的痛苦,应该尽可能避免。它们仅在UTF-16编码的技术上是必需的。BOM是Unicode字符U+FEFF。它在UTF-8中编码为
EF BB BF
,在UTF-16LE中编码为
FF FE
,在UTF-16BE中编码为
FE FF
。似乎您假设您的输入是UTF-16BE,在这种情况下,您可以直接写入字节:

open my $in,  "<:raw", $ARGV[0] or die "Can't open $ARGV[0]: $!";
open my $out, ">:raw", $ARGV[1] or die "Can't open $ARGV[1]: $!";

print $out "\xFE\xFF";
while (<$in>) {
    print $out $_;
}

打开我的$in,“在我们这样做之前,让我告诉你,在大多数情况下,bom是一种难以置信的痛苦,应该尽可能避免。它们仅在UTF-16编码的技术上是必需的。BOM是Unicode字符U+FEFF。它在UTF-8中编码为
EF BB BF
,在UTF-16LE中编码为
FF FE
,在UTF-16BE中编码为
FE FF
。似乎您假设您的输入是UTF-16BE,在这种情况下,您可以直接写入字节:

open my $in,  "<:raw", $ARGV[0] or die "Can't open $ARGV[0]: $!";
open my $out, ">:raw", $ARGV[1] or die "Can't open $ARGV[1]: $!";

print $out "\xFE\xFF";
while (<$in>) {
    print $out $_;
}

打开我的$in,“在我们这样做之前,让我告诉你,在大多数情况下,bom是一种难以置信的痛苦,应该尽可能避免。它们仅在UTF-16编码的技术上是必需的。BOM是Unicode字符U+FEFF。它在UTF-8中编码为
EF BB BF
,在UTF-16LE中编码为
FF FE
,在UTF-16BE中编码为
FE FF
。似乎您假设您的输入是UTF-16BE,在这种情况下,您可以直接写入字节:

open my $in,  "<:raw", $ARGV[0] or die "Can't open $ARGV[0]: $!";
open my $out, ">:raw", $ARGV[1] or die "Can't open $ARGV[1]: $!";

print $out "\xFE\xFF";
while (<$in>) {
    print $out $_;
}

打开我的$in,“在我们这样做之前,让我告诉你,在大多数情况下,bom是一种难以置信的痛苦,应该尽可能避免。它们仅在UTF-16编码的技术上是必需的。BOM是Unicode字符U+FEFF。它在UTF-8中编码为
EF BB BF
,在UTF-16LE中编码为
FF FE
,在UTF-16BE中编码为
FE FF
。似乎您假设您的输入是UTF-16BE,在这种情况下,您可以直接写入字节:

open my $in,  "<:raw", $ARGV[0] or die "Can't open $ARGV[0]: $!";
open my $out, ">:raw", $ARGV[1] or die "Can't open $ARGV[1]: $!";

print $out "\xFE\xFF";
while (<$in>) {
    print $out $_;
}

打开我的$in,”您已经得到了一些关于BOM表的答案。但下面是用更惯用的Perl编写的代码

#!/usr/bin/perl

use strict;
use warnings;

my ($infile, $outfile) = @ARGV;

open my $in_fh, $infile or die "cannot open input file : $infile : $!";
open my $out_fh, '>', $outfile or die "cannot open output file: $!";

print $out_fh "\x{feff}";
print $out_fh while <$in_fh>;
!/usr/bin/perl
严格使用;
使用警告;
my($infile,$outfile)=@ARGV;
打开我的$in\u fh、$infle或die“无法打开输入文件:$infle:$!";
打开我的$out_fh,“>”,$outfile或die“无法打开输出文件:$!";
打印$out_fh“\x{feff}”;
打印$out\u fh时;

关于BOM,您已经得到了一些答案。但下面是用更惯用的Perl编写的代码

#!/usr/bin/perl

use strict;
use warnings;

my ($infile, $outfile) = @ARGV;

open my $in_fh, $infile or die "cannot open input file : $infile : $!";
open my $out_fh, '>', $outfile or die "cannot open output file: $!";

print $out_fh "\x{feff}";
print $out_fh while <$in_fh>;
!/usr/bin/perl
严格使用;
使用警告;
my($infile,$outfile)=@ARGV;
打开我的$in\u fh、$infle或die“无法打开输入文件:$infle:$!";
打开我的$out_fh,“>”,$outfile或die“无法打开输出文件:$!";
打印$out_fh“\x{feff}”;
打印$out\u fh时;

关于BOM,您已经得到了一些答案。但下面是用更惯用的Perl编写的代码

#!/usr/bin/perl

use strict;
use warnings;

my ($infile, $outfile) = @ARGV;

open my $in_fh, $infile or die "cannot open input file : $infile : $!";
open my $out_fh, '>', $outfile or die "cannot open output file: $!";

print $out_fh "\x{feff}";
print $out_fh while <$in_fh>;
!/usr/bin/perl
严格使用;
使用警告;
my($infile,$outfile)=@ARGV;
打开我的$in\u fh、$infle或die“无法打开输入文件:$infle:$!";
打开我的$out_fh,“>”,$outfile或die“无法打开输出文件:$!";
打印$out_fh“\x{feff}”;
打印$out\u fh时;

关于BOM,您已经得到了一些答案。但下面是用更惯用的Perl编写的代码

#!/usr/bin/perl

use strict;
use warnings;

my ($infile, $outfile) = @ARGV;

open my $in_fh, $infile or die "cannot open input file : $infile : $!";
open my $out_fh, '>', $outfile or die "cannot open output file: $!";

print $out_fh "\x{feff}";
print $out_fh while <$in_fh>;
!/usr/bin/perl
严格使用;
使用警告;
my($infile,$outfile)=@ARGV;
打开我的$in\u fh、$infle或die“无法打开输入文件:$infle:$!";
打开我的$out_fh,“>”,$outfile或die“无法打开输出文件:$!";
打印$out_fh“\x{feff}”;
打印$out\u fh时;