Hi, all !

I'm having a problem I can not deal with the French characters.
It seems there is a problem with db.py on line 124 :

        /usr/lib/python2.5/site-packages/web/db.py", line 124, in __init__
self.items = [str(items)]
        UnicodeEncodeError: 'ascii' codec can't encode characters in position
56-57: ordinal not in range(128)

I tried some solutions but without success, including that of Max I
found here :
        http://www.mail-archive.com/[email protected]/msg04618.html

I post here a little piece of my code so you can keep track of my
research.

I hope you'll help me, because I'm completely stuck on it :/

First, the simple mysql table 'charsetproblem.mysql':

#-----------------------------------------------------------#
# Usage:        mysql -u mylogin -p mybase < charsetproblem.mysql #
#               Open  : mysql -u mylogin -p mybase                      #
#                       mysql>     SHOW TABLES;                         #
#                       mysql>     select * from articles;              #
#                       mysql>     DROP TABLE IF EXISTS articles;       #
#                                                                               
                #

# --- create table ---#

CREATE TABLE articles (
id int(10) NOT NULL auto_increment,
titre char(80)  DEFAULT "" NOT NULL,
article text(4096)  DEFAULT "" NOT NULL,
PRIMARY KEY (id)
)DEFAULT CHARACTER SET utf8;

# Note: i tried with and without DEFAULT CHARACTER SET utf8;#


# --- insert datas ---#

INSERT INTO articles VALUES (NULL, "simple link without french
characters", "Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.");

INSERT INTO articles VALUES (NULL, "simple link with frènch
chàracters", "Lorém ipsum dôlor sit amet, çonsèctetur àdipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.");
#-----------------------------------------------------------#


Then, the piece of script 'code.py':


#-----------------------------------------------------------#
#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

# Note:         See charsetproblem.mysql to install table 'article'.
#               Change your settings for user, pw and db (web.database lowest).
#               Create a directory named 'templates" in the same directory as 
this
#               script.
#


import web
from web import form

web.config.debug = False

db = web.database(dbn='mysql', user='myname', pw='mypassword',
db='mydb')

render = web.template.render('templates/')

urls = (
        '/(.*)', 'index'
        )

app = web.application(urls, globals())


class index:
        """
        """
        def __init__(self):
                """  """

        def GET(self, name = "index"):
                """ shows the home page """

                # I try with those charsets without success
                web.header("Content-Type", "text/html; charset= utf-8")
                #web.header("Content-Type", "text/html; charset= iso-8859-1")

                links = []
                article =[]


                # --- LINKS -

                # All titles become links
                result_titre_db = db.query('select titre from articles;')
                for i in result_titre_db:
                        links.append(i.titre)
                        # Curiously, if I try this one, link's charset is 
correct...
                        #links.append(i.titre.encode('raw_unicode_escape'))


                # --- ARTICLES -

                # It is the error which shows the 'self.items' error in db.py,
                # even if I change charset in web.header above:
                # File "/usr/lib/python2.5/site-packages/web/db.py", line 124, 
in
__init__
                # self.items = [str(items)]
                # UnicodeEncodeError: 'ascii' codec can't encode characters in
position 56-57: ordinal not in range(128)
#               query = 'select article from articles where articles.titre = 
"%s";'
% name

                # Other tests:
                # No error, but bad charset even if I change charset in 
web.header
above.
                query = 'select article from articles where articles.titre = 
"%s";'
% name.encode("utf-8")
#               query = 'select article from articles where articles.titre = 
"%s";'
% name.encode('raw_unicode_escape')
#               query = 'select article from articles where articles.titre = 
"%s";'
% name.encode('iso-8859-15')

                result_article_db = db.query(query)
                for i in result_article_db:
                        article.append(i.article)
                if article == []:
                        return web.notfound()


                return render.index(name, links, article)

if __name__ == "__main__":
        app.run()


# I tried the solution given by Max 
http://www.mail-archive.com/[email protected]/msg04618.html
# without success.
#-----------------------------------------------------------#


I have all parameterized and tested to facilitate your testing if you
are ready to help.

Thank you, I really do not know how to solve this problem

Regards,

boubou.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to