2013-12-03 5 views
0

Я использую Google App Engine, чтобы импортировать файл CSV и вставить его в базу данных, но его дает мне эту ошибку:юникода ошибка при импорте файла CSV

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf0' in position 3: ordinal not in range(128) 

файл я импортирования UTF-8 код питон UTF-8

Heres форма:

site = "order" 

    scripts = "" 

    content = """ 
     <div class="row" style="margin-top: 10px;"> 
      <div class="large-12 columns"> 
       <form enctype="multipart/form-data" method="post" action="import"> 
        <select name="db"> 
         <option value="users">Users</option> 
         <option value="machines">Machines</option> 
         <option value="company">Company</option> 

         <option value="process">Order</option> 
         <option value="status">Status</option> 
         <option value="part">Part</option> 

         <option value="machineType">Machine Type</option> 
        <select> 
        <input name="file" type="file"> 
        <input type="submit" value="submit" class="button"> 
       </form> 
      </div> 
     </div> 
    """ 

    template_values = { 
     'site': site, 
     'scripts': scripts, 
     'content': content, 
    } 


    template = JINJA_ENVIRONMENT.get_template('main.html') 
    self.response.write(template.render(template_values)) 

А вот пост класс:

reader = csv.reader(StringIO.StringIO(self.request.get('file').decode('utf-8'))), 

database = self.request.get('db') 

for row in reader: 
      for item in row: 
       tiles = item[0].replace('&comma', ',').split(';') 

       x = machineType(
        Description = tiles[0], 
        ID = tiles[1], 
        Brand = tiles[2], 
        Type = tiles[3]) 
       x.put() 

       self.response.write("Row imported [" + tiles[0] + ", " + tiles[1] + ", " + tiles[2] + ", " + tiles[3] + "]</br>") 

ответ

0

Это должно работать - self.request.get('file').decode('utf-8').encode('ascii', 'ignore')

+0

, что приводит к отключению сайта – user3062352

Смежные вопросы