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
, 3F
인 ASCII
에 대한 코드 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
이를 확인하는 간단한 방법은 다음과 같습니다.
- 셀 중 하나에 "Veszprém"과 같은 고차 문자로 스프레드 시트를 만듭니다.
- 선호하는 스크립팅 언어를 사용하여 스프레드 시트를 구문 분석하고 디코딩합니다.
- 디코딩 된 데이터를 인쇄 할 때 스크립트가 생성하는 내용을 살펴보십시오.
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
'Nice programing' 카테고리의 다른 글
ASP.Net MVC 4 앱을 철저히 단위 테스트 (0) | 2020.12.05 |
---|---|
unique_ptr로 전달 선언? (0) | 2020.12.05 |
2038 년에 대비하려면 어떻게해야합니까? (0) | 2020.12.05 |
http 기본 인증 "로그 아웃" (0) | 2020.12.05 |
R : 빈 데이터 프레임에 행을 추가 할 때 열 이름 손실 (0) | 2020.12.05 |