我认为我有编码问题。我对perl的了解并不是很好。使用其他语言要好得多,但我已经尝试了所有我能想到的东西并检查了很多其他语言。
.pl和.pm都有
use Encode;
use utf8;
binmode (STDIN, 'utf8');
binmode (STDOUT, 'utf8');
定义。下面是将文本写入文件
的功能sub bookingCSV(@){
my $filename = "test.csv";
utf8::decode($_[1]{booking}->{LeadNameFirst});
open OUT, ">:utf8", $filename;
$_="\"$_[1]{booking}->{BookingNo}¦¦$_[1]{booking}->{ShortPlace}¦¦$_[1]{booking}->{ShortDev}¦¦$_[1]{booking}->{ShortAcc}¦¦$_[1]{booking}->{LeadNameFirst}¦¦$_[1]{booking}->{LeadNameLast}¦¦$_[1]{booking}->{Email}¦¦$_[1]{booking}->{Telephone}¦¦$_[1]{booking}->{Company}¦¦$_[1]{booking}->{Address1}¦¦$_[1]{booking}->{Address2}¦¦$_[1]{booking}->{Town}¦¦$_[1]{booking}->{County}¦¦$_[1]{booking}->{Zip}¦¦$_[1]{booking}->{Country}¦¦";
print OUT $_;
close (OUT);
文本文件中的所有西班牙语字符都已损坏。我已尝试在一个特定字段“LeadNameFirst”上解码,但这没有任何区别。我保留了代码,以防它有用。
感谢您的帮助。
答案 0 :(得分:0)
输入的编码是什么?如果输入编码不是utf-8,那么将它解码为utf-8输入对你没有任何好处。
输入是否来自HTML表单?然后编码可能与它来自的网页的编码匹配。 ISO-8859-1
是美国/欧洲语言环境的常见默认编码。无论如何,一旦你发现编码,你可以用它解码输入:
$name = decode('iso-8859-1',$_[1]{booking}->{LeadNameFirst});
print OUT "name is $name\n"; # utf8 layer already enabled
某些浏览器会查找并尊重accept-charset
标记内的<form>
属性,例如,
<form action="/my_form_processor.php" accept-charset="UTF-8">
...
</form>
这将(交叉你的手指)导致你接收utf-8编码的表单输入。