Как преобразовать файл xlsx из utf-8 в windows -1252 - PullRequest
0 голосов
/ 27 января 2020

Я работаю над сценарием PERL, который считывает данные из файла .XLSX Excel и вставляет данные в базу данных Oracle. База данных имеет кодировку Windows -1252, файл excel имеет кодировку UTF-8 (насколько я знаю, это стандарт для файлов xlsx), а специальные символы, такие как ö, ü, ű, ő, отображаются как ??. Как правильно преобразовать кодировку этого файла .xlsx? Я попытался преобразовать строку чтения в windows -1252, прежде чем она будет вставлена ​​в БД, и я попытался преобразовать весь файл Excel в win-1252, но ни один из них не сработал.

спасибо всем за то, что прочитал и попытался помочь решить мою проблему. С уважением, Крис

1 Ответ

0 голосов
/ 29 января 2020

База данных имеет Windows -1252 кодировку

Более долгосрочное решение состоит в том, чтобы исправить это так, чтобы кодировка базы данных была UTF8.

Тем временем Вы можете проанализировать строку XML, используя XML :: Lib XML, а затем сериализовать ее в альтернативную кодировку, например:

use XML::LibXML;

my $doc = XML::LibXML->load_xml(string => $xml);
$doc->setEncoding('ascii');
my $ascii_xml = $doc->toString();

Любой не-ASCII символ в XML затем преобразуется в числовой объект c без потери данных, например: <title>Café life</title> станет <title>Caf&#233; life</title>.

Если вы не можете поместить UTF-8 XML в базу данных , тогда я бы предположил, что нет особого преимущества в использовании windows -1252 вместо ASCII, а использование ASCII устраняет ряд потенциальных «пушек».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...