2016-06-11 5 views
0

CSV에 비 라틴 기반 언어의 단어를 쓰려고하는데 단어를 올바른 형식으로 작성할 수 없습니다.유니 코드 인코딩 및 디코딩 유니 코드 및 CSV 작성

foreign='а также' 
with open('C:\\Users\\Lance\\Desktop\\Programs\\Database Builder\\Russian Test.csv', 'wb') as outfile: 
    outfile.write((foreign).encode('utf-8')) 

이 코드의 출력은 다음과 같습니다

Ð ° Ñ,Ð ° кжÐμ

감사합니다!

답변

3

파일을 올바르게 쓰지만 아마도 Windows-1252 인코딩을 사용하는 편집기 또는 콘솔을 사용하여 파일을 표시하고있을 것입니다. 미국 윈도우 cmd.exe를 콘솔에서

예 :

C:\>type "Russian Test.csv" 
а также 
C:\>chcp 1252 
Active code page: 1252 

C:\>type "Russian Test.csv" 
а также 
C:\>chcp 65001 
Active code page: 65001 

C:\>type "Russian Test.csv" 
а также 

참고 : 코드 페이지 65001 Windows에서 UTF-8 인코딩입니다. 파이썬 3를 사용하는 것 때문에

, 대신이 작업을 수행해야하며, 직접 유니 코드 문자열을 쓰기 :

foreign='а также' 
with open('Russian Test.csv', 'w', encoding='utf8') as outfile: 
    outfile.write(foreign) 
+0

기본적으로 UTF-8이 아닌 편집기 나 콘솔 또는 Excel이지만 파일의 시작 부분에 UTF-8 가짜 BOM (U + FEFF)을 넣음으로써 속일 수 있습니다. – bobince

+0

@bobince를 사용하거나 'utf-8-sig' 인코딩을 사용하십시오. –

+0

안녕하세요. 답변 해 주셔서 감사합니다. 파이썬 3을 사용하고 있으므로 두 번째 코드 디스플레이가 구현되어 여전히 동일한 결과를 얻지 못하고 있습니다. – Lance

-1

첫째, CSV 파일에 데이터를 기록하는 CSV 라이브러리에 따라 올바른 스크립트는해야한다 :

CSV 라이브러리 파이썬 배에서 유니 코드를 지원하지 않는
import csv 
with open('path/to/test.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for line in <your_data>: 
     writer.writerow(line) 

둘째, 당신은 매우 잘 유니 코드를 처리 대안 사용 필요 - https://github.com/jdunck/python-unicodecsv을, 당신은 단순히 CSV 라이브러리의 유니 코드 버전을 설치하고, 짧은 수입을 추가해야 할 모든 첫 번째 li에서의 표현 ne :

pip install unicodecsv 
import unicodecsv as csv 
... 

각 문자열 앞에 'u'를 추가하여 모든 문자열을 유니 코드로 변환하십시오.

+0

안녕하세요 니키, 당신의 방향 당 : \\ 사용자 \\ 랜스 \\ 바탕 화면 \\ 프로그램 \\ 데이터베이스 빌더 : CSV CSV 가져 오기 = 'а также'개방 ('C와 외국으로 수입 unicodecsv \\ Russian Test.csv ','wb ') outfile : outfile.write ((foreign) .encode ('utf-8 ')) – Lance

+0

그래서 unicodecsv를 설치하고 csv를 내 스크립트가 작동할까요? 불행히도 나는 그것을 시도했지만 여전히 동일한 결과를 얻지 못했습니다. – Lance

0

먼저 unicodecsv

pip install unicodecsv 

는 그런 나를 위해 일한 스크립트

import unicodecsv as csv 

에 가져올 설치합니다.