1

私のアプリケーションでは、Spreadsheet :: Readを使用してExcelを読み取り、行に対していくつかのタスクを実行して、最後にデータベースに追加しています。

インポートするファイルはExcelファイル(.XLSX)です。このExcelファイルは、実際にはさまざまなユーザー言語をサポートする用語集です。

問題は、私がこのプロセスに直面していることです。一部の行/列に、正しくデコードされていない特殊文字セルがあります。

たとえば、スペイン語のExcelファイルがある場合:


エクセルシート内 =>ログから抽出


Informacióndecuenta=>Informaci \ x {f3} n de cuenta

Páginadeconsoladeadministracióndecurso=>P \ x {e1} gina de consola de administraci \ x {f3} n de curso

Informaci \ x {f3} n de cuentaがDbに追加され、フェッチされると、UIに無関係な文字が表示されます。

この解決策を試しましたが、機能していません。これは基本的にスプレッドシートのハッキングです::読む

use Text::Iconv;
package Spreadsheet::XLSX;

sub new {
    my $converter = Text::Iconv->new("ASCII","utf-8");
    return __PACKAGE__->SUPER::new(@_, $converter);
}

何が間違っているのか、それとももっと良い解決策を教えてください。

4

1 に答える 1

2

Spreadsheet :: Readは、Latin1でエンコードされたオクテットとして文字列を返します。Perl文字を作成するには、Encodeモジュールを使用します。Perlでのエンコーディングのトピックの紹介を読んでください。

use Encode qw(decode);
use Spreadsheet::Read qw(ReadData);
my $ref = ReadData 'spanish.xls';
my $characters = decode 'Latin-1', $ref->[1]{A1};
于 2012-07-26T09:41:02.213 に答える