将俄语符号写入csv时出现Unicode错误

时间:2017-10-22 05:52:14

标签: python python-3.x csv unicode

我想将cyrillic符号写入csv文件但我得到unicode编码错误。英文符号非常完美。我使用的是Python 3.6.2。

  

UnicodeEncodeError:' ascii'编解码器无法对字符进行编码   1-6:序数不在范围内(128)

#include<stdio.h>
#include<string.h>
int main(){
char buffer[5]="1234";        //5 for '\0'
//char buffer[]="";

char pattern[]="1234";

char ch;


int idxToDel = 0; 
while(1){
  scanf("%c",&ch);
memmove(&buffer[idxToDel], &buffer[idxToDel + 1], strlen(buffer) - idxToDel);
buffer[3]=ch;
printf("%s",buffer);
  }
 return 0;
}

4 个答案:

答案 0 :(得分:4)

打开文件时声明文件的编码。 <{3}}文档中还需要newline=''

import csv

with open('test.csv','w',encoding='utf8',newline='') as csvfile:
    csvfile = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    hello = 'привет, мир!'
    csvfile.writerow([hello])

答案 1 :(得分:0)

您只需要在将hello字符串写入文件(csv)之前对其进行编码。否则Python期望您只输入ascii个字符,如果是非ascii字符,您可以使用utf-8编码:

# -*- coding: utf-8 -*-
import csv


with open("test.csv", 'w') as csvfile:
    csvfile = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    hello = u'привет, мир!' # Better way of declaring a unicode string literal
    csvfile.writerow([hello.encode("utf-8")])

答案 2 :(得分:0)

在您的文件中添加此代码

   # encoding=utf8  
   --------------------------------------
   import sys  
   reload(sys)  
   sys.setdefaultencoding('utf8')  

答案 3 :(得分:0)

对于Python 2专家,请使用此函数代替普通的“打开”函数:

import codecs
codecs.open(out_path, encoding='utf-8', mode='w')

这等效于Python 3中的以下内容:

open(out_path, 'w', encoding='utf8')