Python Forum
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 562: ord
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 562: ord
#21
(Apr-24-2023, 10:12 AM)snippsat Wrote:
(Apr-23-2023, 10:22 PM)ctrldan Wrote: I think I asked the program the wrong things (I found this code on the web), I don't know how to modify the query well.
I don't know if is clear what I want to do... If there is a duplicated songs ('SongA' for example), the duplicated songs will be called: SongA 1, if there are 3 SongA, the last one will be called SongA 2.
So this is maybe the simplest way to do it,add a unique number to song['title'] then it would write all song.
The code you found is old and also written in way that make it hard too read,so if not well verse in Python(also old stuff) this a difficult task.
Here is the change.
for index, song in enumerate(songs, start=1): 
    song_authors = get_song_authornames(song['id'])
    # Find the copyright year (this would be briefer in perl...)
    get_year = re.match(__re_year, xml_attr(song['copyright']))
    if get_year != None:
        copyright_year = get_year.group()
        copyright = song['copyright'][4:].strip()
    else:
        copyright_year = ''
        copyright = ''

    # Prepare Header Block to write:
    to_write = ( HeaderBlock(Name          = xml_attr(song['title']),
                         CCLILicenceNumber = xml_attr(song['ccli_number']),
                         Notes             = xml_attr(song['comments']),
                         CCLICopyRightInfo = xml_attr(copyright_year),
                         Publisher         = xml_attr(copyright),
                         Authors           = xml_attr(song_authors)) )

    # Prepare Verses to write: (funny python syntax...)
    to_write += ''.join(
        reversed([VerseBlock(Verbose_names(v['type']) + ' ' + v['label'],
                    v['type'],
                    v['text'],
                    color = CHORUS_COLOR if v['type'] == 'c'\
                                         else VERSE_COLORS[min(MAX_VERSE_COLORS-1,int(v['label']))])
        for v in ParseLyric(song['lyrics'])]))

    try:
        # Now actually write the thing.
        f = codecs.open(OUTPUT_DIRECTORY + song['title'].replace('/','').replace('?', '').replace('"', '') + str(index) + '.pro5', 'w', encoding='utf_8', errors='replace')
        #f = open(OUTPUT_DIRECTORY + song['title'].replace('/','') + '.pro5','w')
        f.write(to_write + FooterBlock )
        f.close()
    except:
        print ('Oh dear. Something went wrong with writing "' + song['title'] + '".\nSorry.\n\n' +
               'Maybe it\'s a file-write permissions issue?\n' +
               'You could try changing where this script is writing to, it\'s the line\n' +
               '  OUTPUT_DIRECTORY="' + OUTPUT_DIRECTORY + '"\n' +
               'that will need to be changed.' )
        try:
            f.close()
        except:
            pass
        exit();
(Apr-23-2023, 10:22 PM)ctrldan Wrote: Thank you for your help, I don't know if is necessary to open a new thread for this question... let me know
No new thread as has to see all done to help,as this old code usually no one would help as Python 2 has been deadπŸ’€ for over 3 years.
If could fix the sqlite read problem,then could maybe rewrite to Python 3.

Ok thanks, you inspired me (with this method) another way to have index 1,2,3 and not the id and surprise surprise.. It work! Obviously after some trial.
Last question for this thread.. I promise (I hope Big Grin), there is a way to print the songs that are not written by the program? For understand why the program reject the song (and maybe I can add some replace and have the best compatibility). Now I have 1622 exported songs/1644 imported
Reply
#22
(Apr-24-2023, 02:25 PM)ctrldan Wrote: I promise , there is a way to print the songs that are not written by the program
For understand why the program reject the song (and maybe I can add some replace and have the best compatibility). Now I have 1622 exported songs/1644 imported
Should get all as i do or missing 2,1644 import 1642 export.
[Image: n9mVVf.png]
print songs will also break because of Unicode,so it's not that easy.
You see in this crazy line what i haver to do get all Unicode to work.
f = codecs.open(OUTPUT_DIRECTORY + song['title'].replace('/','').replace('?', '').replace('"', '') + str(index) + '.pro5', 'w', encoding='utf_8', errors='replace')
As note so was Unicode handling one of the biggest changes moving from Python 2 to Python 3πŸ‘€

Reply
#23
(Apr-24-2023, 03:01 PM)snippsat Wrote: As note so was Unicode handling one of the biggest changes moving from Python 2 to Python 3πŸ‘€
The move from Python 2 to Python 3 was a transition from the 20th century to the 21st, with the global internet everywhere.
Reply
#24
(Apr-24-2023, 03:01 PM)snippsat Wrote: [url=javascript:void(0);]All code with changes[/url]

ok thank you! If you are interested I find the "error" for the others 2 songs, with your code I obtain 1644 songs with this edit:
            f = codecs.open(OUTPUT_DIRECTORY + song['title'].replace('/','-').replace('?', '...').replace('"', "'").replace(' ...','...').replace(':',".") +" "+ str(index)+'.pro5', 'w', encoding='utf_8', errors="replace")
, also ' ...' and ':' were errors.
snippsat likes this post
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  encode/decode to show correct country letters in a CTk combobox janeik 2 661 Sep-02-2023, 09:46 AM
Last Post: janeik
  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 16: invalid cont Melcu54 3 4,705 Mar-26-2023, 12:12 PM
Last Post: Gribouillis
  [SOLVED] [Debian] UnicodeEncodeError: 'ascii' codec Winfried 1 988 Nov-16-2022, 11:41 AM
Last Post: Winfried
  UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 34: character Melcu54 7 18,316 Sep-26-2022, 10:09 AM
Last Post: Melcu54
  UnicodeEncodeError - Dealing with Japanese Characters fioranosnake 2 2,355 Jul-07-2022, 08:43 PM
Last Post: fioranosnake
  UnicodeEncodeError: 'ascii' codec can't encode character '\xfd' in position 14: ordin Armandito 6 2,645 Apr-29-2022, 12:36 PM
Last Post: Armandito
  UnicodeEncodeError caused by print when program runs from Popen SheeppOSU 5 2,850 Jan-13-2022, 08:11 AM
Last Post: SheeppOSU
  [UnicodeEncodeError from smtplib] yoohooos 0 3,346 Sep-25-2021, 04:27 AM
Last Post: yoohooos
  ASCII-Codec in Python3 [SOLVED] AlphaInc 4 5,990 Jul-07-2021, 07:05 PM
Last Post: AlphaInc
  [solved] unexpected character after line continuation character paul18fr 4 3,296 Jun-22-2021, 03:22 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020