2009-02-03 4 views
54

Excel (예 : 2007)에서 만든 CSV 파일을 읽는 Java 앱이 있습니다. 누구든지 MS Excel에서 이러한 파일을 저장하는 데 사용되는 charset을 알고 있습니까?Microsoft Excel은 파일을 저장할 때 어떤 문자셋을 사용합니까?

나는 짐작 것 중 하나

  • 창-1255 (Cp1255)
  • UTF8

하지만 확장 문자를 해독 할 수없는 오전

  • ISO-8859-1 (예 : 프랑스어 강조 문자) 이러한 문자 집합 유형 중 하나를 사용합니다.

  • 답변

    13

    CSV 파일은 엑셀에서 내보내는 동안 지정된 인코딩을 옵션에 따라, 모든 형식의 수 : 엑셀 (오피스 2013을 포함 : (저장 대화 상자, 도구 버튼, 웹 옵션 항목, 인코딩 탭) UPDATE

    )는 실제로 "다른 이름으로 저장 ..."대화 상자에서 선택된 웹 옵션을 존중하지 않으므로 이는 일종의 버그입니다. OpenOffice Calc를 사용하여 XLSX 파일을 열고 CSV 파일로 내보낼 수 있습니다 (필터 설정 편집, UTF-8 인코딩 선택).

    +4

    이고 기본 인코딩은 "ANSI"이며 대개 cp1250에서 cp1258 중 하나입니다. –

    +0

    기본 인코딩은 UTF-8이지만, 이전에 선택했기 때문에 Excel이 CSV 파일을 마지막으로 저장 한 시간부터 선택 항목을 기억하고 있기 때문일 수 있습니다. 이 선택은 Excel을 닫은 후 다시 시작한 후에도 지속되는 것으로 보입니다. – Triynko

    +14

    "웹 옵션"은 CSV 내보내기에 적용되지 않습니다 (적어도 Excel 2007에서는 해당). CSV 파일의 인코딩은 설치의 기본 인코딩을 따르는 것 같습니다. 그래서 실제로는 무엇이든 할 수 있습니다. 슬프게도 수출 시간에 이것을 통제 할 방법이없는 것 같습니다. – gawi

    -3

    OOXML Excel 2007에서 가져온 파일과 같은 파일은 위키피디아에 따르면 UTF-8로 인코딩됩니다. CSV 파일에 대해서는 알지 못하지만 동일한 형식을 사용하는 이유는 ...

    3

    지난 주 비슷한 문제가있었습니다. 다양한 인코딩으로 다수의 CSV 파일을 받았습니다. 데이터베이스로 가져 오기 전에 chardet libary을 사용하여 올바른 인코딩을 자동으로 알아 냈습니다.

    Chardet은 Mozillas 문자 감지 엔진의 포트이며 샘플 크기가 충분히 큰 경우 (강조 문자 하나가 적용되지 않음) 실제로 작동합니다.

    2

    Russian EditionCSV, 및 CSV (DOS)입니다.

    CSV으로 저장하면 windows-1251이 사용됩니다.

    난 그냥, 러시아 텍스트와 함께 프랑스어 단어 Résumé을 저장하려고 그것은 question mark에 대한 ASCII 코드되고, 52 3F 73 75 6D 3F처럼 HEX3F 그것을 저장. 내가의 CSV 파일, 단어를 열어 물론, 읽을되었다

    (R?sum?)

    0

    CP1250는 Word 및 Excel 2003

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

    포함, Microsoft Office 문서에서 광범위하게 사용됩니다 이를 확인하는 간단한 방법은 다음과 같습니다.

    1. 주문 문자, 예 : 세포들 중 하나에 "Veszprém";
    2. 좋아하는 스크립팅 언어를 사용하여 스프레드 시트를 구문 분석하고 디코딩하십시오.
    3. 디코딩 된 데이터를 인쇄 할 때 스크립트가 생성하는 것을보십시오.

    예 펄 스크립트 : 메모리에서

    #!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); 
        } 
    
    } 
    
    +4

    "cp1250은 Microsoft Office 문서에서 광범위하게 사용됩니다."... 목구멍에서. cp125n은 0 <= n <= 8에 대해 광범위하게 사용됩니다. –

    37

    , 엑셀은 기계 별 ANSI 인코딩을 사용합니다. 그래서 이것은 EN-US 설치의 경우 Windows-1252, 러시아어의 경우 1251 등입니다.

    +0

    True이지만 Excel 2007에서는 사용자가 긴 목록에서 선택할 수 있습니다 (도구 버튼을 찾을 수 있으면!). "ANSI"가 기본값입니다. –

    +7

    그것이 작동하는 방법이지만, 기능이 고장났습니다. 저장 대화 상자/도구 메뉴/웹 옵션 항목/인코딩 탭에서 선택한 "이 문서 다른 이름으로 저장 :"옵션을 사용하는 대신 Excel은 지역 및 언어 설정에서 설정된 코드 페이지 만 사용합니다. – Triynko

    -2

    특수 문자가 포함 된 Excel 파일을 csv로 내보내는 것이 엉성한 일일 수는 있지만 간단히 해결할 수 있습니다. 셀을 Google 문서에 복사하여 붙여 넣은 다음 저장하면됩니다. .

    +5

    프로그래밍 방식의 솔루션을 찾는 것처럼 들립니다. 복사하여 붙여 넣기는 실제로 "청구서에 적합하지 않습니다". 또한,이 질문은 꽤 오래되었습니다. 응답이 이전 응답보다 중요한 사항을 제공하지 않는 한 오래된 스레드를 다시 시작하지 않는 것이 가장 좋습니다.) – Leigh

    +0

    글쎄, 그렇게 말하면. 그러나 가장 정격 된 답변은 작동하지 않으며 (주석 참조) 프로그래밍 방식의 해결책도 아닙니다. 또한, 내 솔루션이 작동합니다. 마지막으로 주제가 오래된 것일 수 있습니다. 문제가있을 때 첫 페이지에 여전히 팝업으로 표시되며 스레드에는 작동하지만 해결 방법은 없습니다. –

    +0

    실제로 그 의견은 버그라고합니다. 또한 OpenOffice 또는 지역 및 언어 설정을 수정하는 두 가지 대안을 제시합니다. 그래서 나는이 제안이 이미 주어진 것보다 중요한 개선이라고 생각하지 않습니다. 이제 이후 버전 또는 프로그램 방식의 대안에서 수정 사항이있는 경우 다른 사람들이이를 듣기를 좋아할 것이라고 확신합니다. – Leigh

    0

    당신은 인코딩 얻을 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 
    
    2

    을 ... 우리는 2017 년에 지금 그리고 아직도 엑셀은 간단한 스프레드 시트를 저장 할 수 없습니다 원래 인코딩을 유지하면서 CSV 형식으로 ... 그냥 놀라운.

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