Excelで作成されたCSVファイルを読み込むJavaアプリ(2007年など)があります。MSExcelがこれらのファイルを保存するために使用する文字セットを知っていますか?
私はどちらかを推測しているでしょう:
これらの文字セットのいずれかを使用して拡張文字(フランス語のアクセント付き文字など)をデコードすることはできません。
CSVファイルは、Excelからのエクスポート中に指定されたエンコードオプションに応じて、任意の形式にすることができます:(保存ダイアログ、ツールボタン、Webオプション項目、エンコードタブ)
更新:Excel(Office 2013を含む)は、[名前を付けて保存]ダイアログで選択されたWebオプションを実際に尊重しないため、これは何らかのバグです。 OpenOffice Calcを使用してXLSXファイルを開き、CSVファイルとしてエクスポートします(フィルター設定を編集し、UTF-8エンコードを選択します)。
メモリから、Excelはマシン固有のANSIエンコーディングを使用します。したがって、これはEN-USインストールの場合はWindows-1252、ロシア語の場合は1251などになります。
この古いスレッドをウェイクアップしています... 2017年になりました。それでも、Excelは単純なスプレッドシートをCSV形式に保存することはできませんが、元のエンコードを保持しています...
幸い、Google Docsは適切な世紀に住んでいます。私にとっての解決策は、Googleドキュメントを使用してスプレッドシートを開き、CSVとしてダウンロードすることです。結果は、正しくエンコードされたCSVファイルです(すべての文字列はUTF8でエンコードされます)。
先週も同様の問題がありました。さまざまなエンコーディングのCSVファイルを多数受け取りました。データベースにインポートする前に、 chardet libary を使用して、正しいエンコーディングを自動的に検出しました。
Chardetは、Mozillaの文字検出エンジンからの移植であり、サンプルサイズが十分に大きい場合(強調された1つの文字では機能しません)、非常にうまく機能します。
Russian Edition
はCSV
、CSV (Macintosh)
およびCSV (DOS)
を提供します。
プレーンなCSV
で保存する場合、windows-1251
を使用します。
フランス語の単語Résumé
をロシア語のテキストと一緒に保存しようとしましたが、52 3F 73 75 6D 3F
のようにHEX
に保存しました。3F
はquestion mark
のASCII
コードです。
CSV
ファイルを開くと、もちろん、Wordは読めなくなりました(R?sum?
)
Excel 2010は、File > Save As > Unicode Text (.txt)
を選択した場合、UTF-16/UCS-2 [〜#〜] tsv [〜#〜]ファイルを保存します。 「.txt」という接尾辞が付いた(強制)ので、「。tsv」に変更できます。
CSVが必要な場合は、Notepad ++、Ultra Edit、Crimson EditorなどのテキストエディターでTSVファイルを変換し、タブをセミコロン、カンマなどに置き換えることができます。以下に注意してください。 DBテーブルへの読み込みについては、TSVが既に正常に機能することがよくあります(多くの場合、手動で読み込む方が簡単です)。
UTF-8などの別のコードページが必要な場合は、上記のエディターのいずれかを使用して変換します。
この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