64

Excel で作成された CSV ファイルを読み取る Java アプリがあります (2007 など)。これらのファイルを保存するためにMS Excelが使用する文字セットを知っている人はいますか?

私は次のいずれかを推測したでしょう:

  • windows-1255 (Cp1255)
  • ISO-8859-1
  • UTF8

しかし、これらの文字セット タイプのいずれかを使用して、拡張文字 (たとえば、フランス語のアクセント付き文字) をデコードできません。

4

11 に答える 11

42

メモリから、Excel はマシン固有の ANSI エンコーディングを使用します。したがって、これは、EN-US インストールの場合は Windows-1252、ロシア語の場合は 1251 などになります。

于 2009-10-01T06:03:23.820 に答える
18

CSV ファイルは、Excel からのエクスポート中に指定されたエンコード オプションに応じて、任意の形式にすることができます ([保存] ダイアログ、[ツール] ボタン、[Web オプション] 項目、[エンコード] タブ)。

更新: Excel (Office 2013 を含む) は、[名前を付けて保存] ダイアログで選択された Web オプションを実際には尊重しないため、これは何らかのバグです。現在、OpenOffice Calc を使用して XLSX ファイルを開き、CSV ファイルとしてエクスポートしています (フィルター設定を編集し、UTF-8 エンコーディングを選択します)。

于 2010-05-17T20:34:53.187 に答える
4

先週も同様の問題がありました。さまざまなエンコーディングの CSV ファイルを多数受け取りました。データベースにインポートする前に、chardet ライブラリを使用して正しいエンコーディングを自動的に調べました。

Chardet は Mozilla の文字検出エンジンからの移植であり、サンプル サイズが十分に大きい場合 (1 つの強調文字では不十分)、非常にうまく機能します。

于 2009-02-03T19:44:48.190 に答える
2

Russian EditionオファーCSVCSV (Macintosh)およびCSV (DOS)

プレーンCSVで保存する場合は を使用しますwindows-1251

Résuméロシア語のテキストと一緒にフランス語の単語を保存しようとしたところ、 のコードである のHEXよう52 3F 73 75 6D 3Fに保存されました。3FASCIIquestion mark

ファイルを開くとCSV、もちろん文字が読めなくなりました( R?sum?)

于 2009-02-03T19:45:16.770 に答える
-1

特殊文字を含む Excel ファイルを csv にエクスポートするのは面倒ですが、簡単な回避策があります。セルをコピーして Google ドキュメントに貼り付け、そこから保存するだけです。

于 2012-06-14T22:18:02.730 に答える
-1

この Visual Studio VB.Net コードを使用してエンコーディングを取得できます。

Dim strEncryptionType As String = String.Empty
Dim myStreamRdr As System.IO.StreamReader = New System.IO.StreamReader(myFileName, True)
Dim myString As String = myStreamRdr.ReadToEnd()
strEncryptionType = myStreamRdr.CurrentEncoding.EncodingName
于 2016-06-28T14:59:52.360 に答える
-1

cp1250 は、Word や Excel 2003 などの Microsoft Office ドキュメントで広く使用されています。

http://en.wikipedia.org/wiki/Windows-1250

これを確認する簡単な方法は次のとおりです。

  1. セルの 1 つに「Veszprém」などの上位文字を含むスプレッドシートを作成します。
  2. お気に入りのスクリプト言語を使用して、スプレッドシートを解析およびデコードします。
  3. デコードされたデータを印刷するときにスクリプトが生成するものを見てください。

perl スクリプトの例:

#!perl

use strict;

use Spreadsheet::ParseExcel::Simple;
use Encode qw( decode );

my $file    = "my_spreadsheet.xls";

my $xls     = Spreadsheet::ParseExcel::Simple->read( $file );
my $sheet   = [ $xls->sheets ]->[0];

while ($sheet->has_data) {

    my @data = $sheet->next_row;

    for my $datum ( @data ) {
        print decode( 'cp1250', $datum );
    }

}
于 2009-10-01T05:47:56.613 に答える
-3

ウィキペディアによると、Excel 2007 のようなOOXMLファイルは UTF-8 でエンコードされています。CSVファイルについてはわかりませんが、同じ形式を使用するのは当然です...

于 2009-02-03T19:41:03.020 に答える