在perl cgi中,如何将包括连字符在内的半宽日语字符转换为全宽日语字符?
我有学生信息的CSV输出列表在perl cgi中,如何将包括连字符在内的半宽日语字符转换为全宽日语字符?,perl,cgi,Perl,Cgi,我有学生信息的CSV输出列表 my $SrchResult = $TextBookCommonAdmin->GetOrderCSV($SrchData); my $CsvData = '"受付番号","学籍番号","氏名","フリガナ","〒","都道府県・市区","町村・番地","アパート・マンション名"' . &quo
my $SrchResult = $TextBookCommonAdmin->GetOrderCSV($SrchData);
my $CsvData = '"受付番号","学籍番号","氏名","フリガナ","〒","都道府県・市区","町村・番地","アパート・マンション名"' . "\r\n";
foreach my $DataId (sort (keys %{$SrchResult})){
foreach my $key (keys %{$DataHash}){
$DataHash->{$key} = decode('utf8',$DataHash->{$key});
}
my $LineData = sprintf('"%s","%s","%s","%s","%s","%s","%s","%s"',
$DataHash->{'recptid'},
$DataHash->{'student_id'},
$DataHash->{'student_name'},
$DataHash->{'student_kana'},
$DataHash->{'student_zip'},
$DataHash->{'student_address'},
$DataHash->{'student_address2'},
$DataHash->{'student_address3'},
);
$CsvData .= sprintf("%s\r\n", $LineData);
}
my ($second, $minute, $hour, $day, $month, $year, @rest) = localtime();
$year += 1900;
$month += 1;
my $TimeStr = sprintf('%4d-%02d-%02d', $year, $month, $day);
my $TimedateFormat = sprintf('%4d%02d%02d%02d%02d%02d', $year, $month, $day, $hour, $minute, $second);
my $name= $TimedateFormat.".csv";
print "Content-Type: application/octet-stream\n";
print "Content-Disposition: attachment; filename=$name\n\n";
print encode('cp932', $CsvData);
输入数据:
86 | 20A1123032C |内村 颯太 | ウチムラ ソウタ | 2130013 | 神奈川県 | 2-9-4スペランサ4-2-9强>
输出csv:
86 | 20A1123032C |内村 颯太 | ウチムラ ソウタ | 2130013 | 神奈川県 | 2002/9/4スペランサ4?2?9强>
以上示例:
打开Perl CSV文件时,连字符数字转换为日期,连字符文本转换为?在“学生地址2”和“学生地址3”列中
也许有一个日本的半幅和全幅问题
有什么解决办法吗?请显示完整的代码,请参阅。同时显示输入数据和生成的输出数据的示例您能否提供问题的最小、可运行的演示,并请包括您获得的输出和您期望的输出。现在包括输入和输出数据…提前感谢..这是您获得的输出还是您想要的输出?包括缺少的任何一个。并将您的代码精简为。请显示完整的代码,请参阅。同时显示输入数据和生成的输出数据的示例您能否提供问题的最小、可运行的演示,并请包括您获得的输出和您期望的输出。现在包括输入和输出数据…提前感谢..这是您获得的输出还是您想要的输出?包括缺少的任何一个。并将代码删减到一个新的级别。