On Thursday, March 31, 2011 6:51:20 AM UTC+2, Bob Tanner wrote:
> I must be missing something simple or fundamental when it comes to TG2 and
> Unicode. Every time I step out of the ASCII world the UnicodeDecodeError hits
> me.
>
>
> The table as dumped from MySQL
>
>
>
> --
> -- Table structure for table `resourceitem`
> --
>
>
> DROP TABLE IF EXISTS `resourceitem`;
> /*!40101 SET @saved_cs_client = @@character_set_client */;
> /*!40101 SET character_set_client = utf8 */;
> CREATE TABLE `resourceitem` (
> `resourceid` binary(16) NOT NULL,
> `item` int(11) NOT NULL,
> `description` text,
> `title` varchar(2000) DEFAULT NULL,
> `publisher` varchar(2000) DEFAULT NULL,
> `creator` varchar(2000) DEFAULT NULL,
> `language` varchar(10) DEFAULT NULL,
> `identifier` varchar(127) DEFAULT NULL,
> `thumbnailurl` varchar(254) DEFAULT NULL,
> `format` varchar(40) DEFAULT NULL,
> `src` varchar(254) DEFAULT NULL,
> `downloadtype` varchar(20) DEFAULT NULL,
>
> UNIQUE KEY `resourceitem_resourceid` (`resourceid`,`item`),
> KEY `resourceitem_creator` (`creator`(255)),
> KEY `resourceitem_title` (`title`(255)),
> KEY `resourceitem_thumbnailurl` (`thumbnailurl`),
> KEY `resourceitem_identifier` (`identifier`),
> KEY `resourceitem_src` (`src`),
> KEY `resourceitem_publisher` (`publisher`(255)),
> CONSTRAINT `resourceitem_ibfk_1` FOREIGN KEY (`resourceid`) REFERENCES
> `resourcekey` (`resourceid`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
> /*!40101 SET character_set_client = @saved_cs_client */;
>
>
> The TG2 model
>
>
>
> # -*- coding: utf-8 -*-
> """ResourceItem model module."""
>
>
> from sqlalchemy import Column, Integer, String, Text, ForeignKey,
> LargeBinary, Unicode, UnicodeText, Table
> from sqlalchemy.orm import relation
> from reports.model import DeclarativeBase
>
>
> __all__ = ['ResourceItemMode']
>
>
> class ResourceItemModel(DeclarativeBase):
> __tablename__ = 'resourceitem'
>
> resourceid = Column(LargeBinary(16), nullable=False, primary_key=True)
> item = Column(Integer(11), nullable=False, primary_key=True)
> description = Column(Text, nullable=True)
> title = Column(Unicode(2000), nullable=True)
> publisher = Column(Unicode(2000), nullable=True)
> creator = Column(Unicode(2000), nullable=True)
> language = Column(Unicode(10), nullable=True)
> identifier = Column(Unicode(127), nullable=True)
> thumbnailurl = Column(Unicode(254), nullable=True)
> format = Column(Unicode(40), nullable=True)
> src = Column(String(254), nullable=True)
> downloadtype = Column(Unicode(20), nullable=True)
>
>
> One of the creators is Antoine de
> Saint-Exupéry <http://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry>
> and when I do a mysql comment line query I get this:
>
>
>
> mysql> select creator from resourceitem where creator like '%Antoine%' ;
> +---------------------------+
> | creator |
> +---------------------------+
> | Saint-Exupéry, Antoine de |
> +---------------------------+
> 1 row in set (0.00 sec)
>
>
> Looks properly decoded and display. I set up a simple CrudRestController and
> did the boiler plate TG2 code:
>
>
>
> class ResourceItemController(CrudRestController):
> model = ResourceItemModel
>
> class new_form_type(AddRecordForm):
> __model__ = ResourceItemModel
>
>
> class edit_form_type(EditableForm):
> __model__ = ResourceItemModel
>
> class edit_filler_type(EditFormFiller):
> __model__ = ResourceItemModel
>
> class table_type(TableBase):
> __model__ = ResourceItemModel
>
> class table_filler_type(TableFiller):
> __model__ = ResourceItemModel
> __omit_fields__ = ['__actions__']
>
>
>
> class RootController(BaseController):
> secc = SecureController()
> admin = AdminController(model, DBSession, config_type=TGAdminConfig)
> error = ErrorController()
>
>
> resource_items = ResourceItemController(DBSession)
>
>
> Open web browser to http://127.0.0.1:8080/resource_items/ I get a Server
> Error, the dreaded UnicodeDecodeError on Antoine de Saint-Exupéry name.
>
>
>
> I'm not sure what I did wrong.
>
>
> Is the default template from sprox not <meta content="text/html;
> charset=UTF-8"/> by chance?
>
>
> Any recommendations on how I can resolve my UnicodeDecodeError?
>
>
> Thanks.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> Bob Tanner <[email protected]> | Phone : 952-943-8700
> http://www.real-time.com, Linux, OSX, VMware | Fax : 952-943-8500
> Key fingerprint = F785 DDFC CF94 7CE8 AA87 3A9D 3895 26F1 0DDB E378
Listen I have been on this same problem it's not genshi or anython it's python
itself just find the site.py in the python/Lib/site.py and look for
def setencoding():
"""Set the string encoding used by the Unicode implementation. The
default is 'ascii', but if you're willing to experiment, you can
change this."""
encoding = "ascii" # Default value set by _PyUnicode_Init()
you see the encoding = "ascii" change to look like this encoding = "utf-8" and
the whole problem is gone.
Yes the solution is that EASY
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/turbogears/-/Fww_2zbBn-UJ.
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/turbogears?hl=en.