Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
Perl 如何将xlsx文件从utf-8转换为windows-1252_Perl_Encoding_Utf 8_Xlsx_Windows 1252 - Fatal编程技术网

Perl 如何将xlsx文件从utf-8转换为windows-1252

Perl 如何将xlsx文件从utf-8转换为windows-1252,perl,encoding,utf-8,xlsx,windows-1252,Perl,Encoding,Utf 8,Xlsx,Windows 1252,我正在编写PERL脚本,该脚本从.XLSX Excel文件读取数据,并将数据插入Oracle数据库。数据库采用Windows-1252编码,excel文件采用UTF-8编码(据我所知,这是xlsx文件的标准),特殊字符如ö、ü、ű、ő显示为??。转换.xlsx文件编码的正确方法是什么?在将读取的字符串插入数据库之前,我曾尝试将其转换为windows-1252,并尝试将整个Excel文件转换为win-1252,但均无效 感谢大家阅读并帮助我解决问题。 当做 克里斯 数据库具有Windows-125

我正在编写PERL脚本,该脚本从.XLSX Excel文件读取数据,并将数据插入Oracle数据库。数据库采用Windows-1252编码,excel文件采用UTF-8编码(据我所知,这是xlsx文件的标准),特殊字符如ö、ü、ű、ő显示为??。转换.xlsx文件编码的正确方法是什么?在将读取的字符串插入数据库之前,我曾尝试将其转换为windows-1252,并尝试将整个Excel文件转换为win-1252,但均无效

感谢大家阅读并帮助我解决问题。 当做 克里斯

数据库具有Windows-1252编码

长期的解决方案是修复这个问题,使数据库编码为UTF8

同时,您可以使用XML::LibXML解析XML字符串,然后将其序列化为替代编码,如下所示:

use XML::LibXML;

my $doc = XML::LibXML->load_xml(string => $xml);
$doc->setEncoding('ascii');
my $ascii_xml = $doc->toString();
XML中的任何非ASCII字符都将转换为数字字符实体,而不会丢失数据,例如:
Cafélife
将变成
Café;生活


如果您不能将UTF-8 XML放入数据库,那么我建议使用windows-1252代替ASCII没有什么特别的优势,并且使用ASCII消除了许多潜在的“麻烦”。

展示您的尝试?特别是在将读取字符串插入数据库方法之前将其转换为windows-1252。您可以使用
Encode::to_from($str,'UTF-8','cp1252')
,将UTF-8编码的
$str
转换为windows-1252,查看您使用哪个perl模块访问Oracle数据库?