Nice programing

Microsoft Excel은 파일을 저장할 때 어떤 문자 집합을 사용합니까?

nicepro 2020. 12. 5. 10:39
반응형

Microsoft Excel은 파일을 저장할 때 어떤 문자 집합을 사용합니까?


Excel (예 : 2007)에서 생성 된 CSV 파일을 읽는 Java 앱이 있습니다. 누구든지 MS Excel이 이러한 파일을 저장하는 데 사용하는 문자 집합을 알고 있습니까?

나는 다음 중 하나를 추측했을 것이다.

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

그러나 이러한 문자 집합 유형 중 하나를 사용하여 확장 문자 (예 : 프랑스어 강조 문자)를 디코딩 할 수 없습니다.


CSV 파일은 Excel에서 내보내는 동안 지정된 인코딩 옵션에 따라 모든 형식이 될 수 있습니다 (저장 대화 상자, 도구 단추, 웹 옵션 항목, 인코딩 탭).

업데이트 : Excel (Office 2013 포함)은 "다른 이름으로 저장 ..."대화 상자에서 선택한 웹 옵션을 실제로 존중하지 않으므로 일종의 버그입니다. 이제 OpenOffice Calc를 사용하여 XLSX 파일을 열고 CSV 파일로 내 보냅니다 (필터 설정 편집, UTF-8 인코딩 선택).


메모리에서 Excel은 컴퓨터 별 ANSI 인코딩을 사용합니다. 따라서 이것은 EN-US 설치의 경우 Windows-1252, 러시아어의 경우 1251 등입니다.


이 오래된 스레드를 깨우는 중 ... 우리는 이제 2017 년입니다.하지만 여전히 Excel은 원본 인코딩을 유지하면서 간단한 스프레드 시트를 CSV 형식으로 저장할 수 없습니다. 놀랍습니다.

다행히도 Google 문서는 올바른 세기에 살고 있습니다. 나를위한 해결책은 CSV로 다시 다운로드하는 것보다 Google 문서 도구를 사용하여 스프레드 시트를 여는 것입니다. 결과는 올바르게 인코딩 된 CSV 파일 (모든 문자열이 UTF8로 인코딩 됨)입니다.


지난주에도 비슷한 문제가있었습니다. 인코딩이 다른 여러 CSV 파일을 받았습니다. 데이터베이스로 가져 오기 전에 chardet 라이브러리 를 사용 하여 올바른 인코딩을 자동으로 감지했습니다 .

Chardet은 Mozillas 문자 감지 엔진의 포트이며 샘플 크기가 충분히 크면 (한 개의 강조된 문자는 사용할 수 없음) 정말 잘 작동합니다.


Russian Edition이벤트 CSV, CSV (Macintosh)CSV (DOS).

일반에 저장할 때 CSV, 그것을 사용합니다 windows-1251.

난 그냥 프랑스어 단어를 저장하려고 Résumé러시아 텍스트와 함께, 그것은에 저장된 HEX같은 52 3F 73 75 6D 3F, 3FASCII에 대한 코드 question mark.

CSV파일을 열었을 때 물론 단어를 읽을 수 없게되었습니다 ( R?sum?).


이 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

.NET Framework 를 선택하면 Excel 2010은 UTF-16 / UCS-2 TSV 파일을 저장합니다 File > Save As > Unicode Text (.txt). (강제) 접미사 ".txt"이며 ".tsv"로 변경할 수 있습니다.

CSV가 필요한 경우 메모장 ++, Ultra Edit, Crimson Editor 등과 같은 텍스트 편집기에서 TSV 파일을 변환하여 탭을 세미콜론, 쉼표 등으로 바꿀 수 있습니다. 예를 들어 DB 테이블로 읽는 경우 TSV가 이미 잘 작동하는 경우가 많습니다 (수동으로 읽는 것이 더 쉽습니다).

UTF-8과 같은 다른 코드 페이지가 필요한 경우 위에서 언급 한 편집기 중 하나를 사용하여 변환하십시오.


cp1250은 Word 및 Excel 2003을 포함한 Microsoft Office 문서에서 광범위하게 사용됩니다.

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

이를 확인하는 간단한 방법은 다음과 같습니다.

  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 );
    }

}

While it is true that exporting an excel file that contains special characters to csv can be a pain in the ass, there is however a simple work around: simply copy/paste the cells into a google docs and then save from there.


OOXML files like those that come from Excel 2007 are encoded in UTF-8, according to wikipedia. I don't know about CSV files, but it stands to reason it would use the same format...

참고URL : https://stackoverflow.com/questions/508558/what-charset-does-microsoft-excel-use-when-saving-files

반응형