Microsoft Excel은 파일을 저장할 때 어떤 문자 집합을 사용합니까?
Excel(예: 2007)에서 생성된 CSV 파일을 읽는 Java 앱이 있습니다.MS Excel이 이 파일들을 저장하기 위해 어떤 문자 집합을 사용하는지 아는 사람이 있습니까?
저는 다음 중 하나를 추측했을 것입니다.
- windows-1255(Cp1255)
- ISO-8859-1
- UTF8
그러나 이러한 문자 집합 유형 중 하나를 사용하여 확장 문자(예: 프랑스어 강조 문자)를 디코딩할 수 없습니다.
Excel은 메모리에서 시스템별 ANSI 인코딩을 사용합니다.EN-US 설치의 경우 Windows-1252, 러시아어의 경우 1251 등입니다.
Excel에서 내보내는 동안 지정된 인코딩 옵션에 따라 CSV 파일의 형식은 다양합니다. (저장 대화상자, 도구 단추, 웹 옵션 항목, 인코딩 탭)
업데이트: Excel(Office 2013 포함)은 실제로 "다른 이름으로 저장..."에서 선택한 웹 옵션을 존중하지 않습니다.대화상자, 그래서 이것은 일종의 버그입니다.지금은 OpenOffice Calc를 사용하여 XLSX 파일을 열고 CSV 파일로 내보냅니다(필터 설정 편집, UTF-8 인코딩 선택).
이 오래된 스레드를 깨우는 것은...우리는 지금 2017년입니다.그러나 Excel은 원본 인코딩을 유지하면서 단순한 스프레드시트를 CSV 형식으로 저장할 수 없습니다...그냥 놀랍다.
다행히도 구글 독스는 올바른 세기에 살고 있습니다.제가 해결할 수 있는 방법은 Google 문서를 사용하여 스프레드시트를 열고 CSV로 다시 다운로드하는 것입니다.결과는 올바르게 인코딩된 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,3F의 입장에서ASCII의 question mark.
▁▁i을▁opened를 열었을 때.CSV수 없게 되었습니다.R?sum?)
Excel 2010은 UTF-16/UCS-2 TSV 파일을 저장합니다.File > Save As > Unicode Text (.txt)이것은 (force) 접두사 ".txt"이며, ".tsv"로 변경할 수 있습니다.
CSV가 필요한 경우 Notepad++, Ultra Edit, Crimson Editor 등의 텍스트 편집기에서 TSV 파일을 변환하여 탭을 세미콜론, 쉼표 등으로 바꿀 수 있습니다.예를 들어 DB 테이블에 읽기의 경우 TSV가 이미 잘 작동하는 경우가 많습니다(수동으로 읽기가 더 쉬운 경우도 있음).
UTF-8과 같은 다른 코드 페이지가 필요한 경우 위에서 언급한 편집기 중 하나를 사용하여 변환합니다.
cp1250은 Word 및 Excel 2003을 포함한 Microsoft Office 문서에서 광범위하게 사용됩니다.
http://en.wikipedia.org/wiki/Windows-1250
이를 확인하는 간단한 방법은 다음과 같습니다.
- 셀 중 하나에 "Veszprem"과 같은 고차 문자가 있는 스프레드시트를 만듭니다.
- 즐겨찾는 스크립트 언어를 사용하여 스프레드시트를 구문 분석하고 디코딩합니다.
- 디코딩된 데이터를 출력할 때 스크립트가 생성하는 것을 확인합니다.
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 );
}
}
특수 문자가 포함된 Excel 파일을 csv로 내보내는 것이 번거로울 수 있지만 간단한 해결 방법이 있습니다. 즉, 셀을 복사/붙여 구글 문서에 저장하기만 하면 됩니다.
이 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
UTF8 + BOM 인코딩을 사용하여 CSV 파일을 생성할 수 있습니다(https://en.wikipedia.org/wiki/Byte_order_mark) .
처음 3바이트는 BOM(0xEF, 0xBB, 0xBF)이고 다음은 UTF8 콘텐츠입니다.
Excel 2007에서 제공되는 것과 같은 OOXML 파일은 위키피디아에 따라 UTF-8로 인코딩됩니다.CSV 파일에 대해서는 잘 모르지만, 같은 형식을 사용하는 것은 당연합니다...
언급URL : https://stackoverflow.com/questions/508558/what-charset-does-microsoft-excel-use-when-saving-files
'programing' 카테고리의 다른 글
| Eclipse를 제거하는 방법은 무엇입니까? (0) | 2023.05.04 |
|---|---|
| 모든 핵심 데이터 관계에 역관계가 있어야 합니까? (0) | 2023.05.04 |
| Windows 8 런타임(WinRT / Windows Store 앱 / Windows 10 Universal App)은 Silverlight 및 WPF와 비교하면 어떻습니까? (0) | 2023.05.04 |
| IIS7 응답을 설정할 때 사용자 지정 오류를 재정의합니다.상태 코드? (0) | 2023.05.04 |
| Windows에서 "gitbash" 설치에 man 및 zip을 추가하는 방법 (0) | 2023.05.04 |