Как вывести знак евро с помощью электронной таблицы :: WriteExcel из столбца MSSQL Server nvarchar - PullRequest
1 голос
/ 26 мая 2011

У меня есть текст со знаками € в столбце nvarchar на MSSQL 2008 Server, и я хочу выгрузить этот текст через Spreadsheet :: WriteExcel в файл Excel, но я всегда получаю некоторые проводные подписи вместо €.

До сих пор я собирал строку в Perl напрямую и всегда использовал что-то вроде

my $euro = chr 0x20AC;
$worksheet->write($currentline, $currentcolumn, "Some text here".$euro ,$format);

, который всегда работал.

Есть подсказки?

  • ActivePerl v5.10.0
  • Windows
  • MSSql Server 2008
  • Доступ на ADO => Win32::OLE->new("ADODB.Recordset");

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Обработка Юникода в Spreadsheet :: WriteExcel относительно проста: если строка, которую вы пытаетесь записать, имеет формат utf8, то она записывается в файл Excel именно так, как вы ожидаете.

Обеспечение того, чтобы написанные строки были в формате utf8, не всегда так просто.

Чтобы решить эту проблему, вам просто нужно выяснить, в какой кодировке находятся строки, поступающие из MSSQL, а затем использовать модуль Encode для преобразования их в utf8. Например:

use Encode 'decode';

my $string = 'some string with koi8-r characters';
   $string = decode('koi8-r', $string);

$worksheet->write('A1',  $string);

Взгляните на unldode perldocs, связанный в разделе WriteExcel выше для некоторого фона.

0 голосов
/ 27 мая 2011

Вполне возможно, что это проблема кодировки. Знак евро не очень хорошо поддерживается, и форматы Microsoft могут быть решительным ударом, когда дело доходит до кодировок.

У меня нет фактического решения, но было бы неплохо выяснить, что WriteExcel пытается сделать с вашей кодировкой и что фактически поддерживает Excel. Для чего бы то ни было, Perl хранит строки как Unicode по умолчанию, и если вы хотите UTF-8, вам нужно выполнить преобразование явно.

Информацию о Perl и кодировках можно найти на странице man для JSON :: XS, которая, как ни странно, является лучшим ресурсом. http://search.cpan.org/~mlehmann/JSON-XS-2.3/XS.pm

...