Perl 如何将xlsx文件从utf-8转换为windows-1252
我正在编写PERL脚本,该脚本从.XLSX Excel文件读取数据,并将数据插入Oracle数据库。数据库采用Windows-1252编码,excel文件采用UTF-8编码(据我所知,这是xlsx文件的标准),特殊字符如ö、ü、ű、ő显示为??。转换.xlsx文件编码的正确方法是什么?在将读取的字符串插入数据库之前,我曾尝试将其转换为windows-1252,并尝试将整个Excel文件转换为win-1252,但均无效 感谢大家阅读并帮助我解决问题。 当做 克里斯 数据库具有Windows-1252编码 长期的解决方案是修复这个问题,使数据库编码为UTF8 同时,您可以使用XML::LibXML解析XML字符串,然后将其序列化为替代编码,如下所示: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
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数据库?