我正在使用Rose::DB::Object,SQLite和中文文本。我的类看起来像这样:使用Rose :: DB :: Object处理SQLite中的UTF8编码文本
package My::DB;
use base qw(Rose::DB);
__PACKAGE__->use_private_registry;
__PACKAGE__->register_db(
driver => 'sqlite',
database => 'data/sqmple.db',
);
package Motorcycle;
use My::DB;
use base qw(Rose::DB::Object);
...
sub init_db { My::DB->new() };
用来存储一个记录中的代码:
Motorcycle->new(
type => $self->param('type'),
brand => $self->param('brand'),
color => $self->param('color'),
)->save;
用于显示数据(从Mojolicious应用程序内)的代码:
<td><%= Mojo::ByteStream->new($cycle->type)->decode("utf-8") %></td>
<td><%= Mojo::ByteStream->new($cycle->brand)->decode("utf-8") %></td>
<td><%= Mojo::ByteStream->new($cycle->color)->decode("utf-8") %></td>
我怎样才能消除解码步骤?我想显示的代码看起来像这个:
<td><%= $cycle->type %></td>
<td><%= $cycle->brand %></td>
<td><%= $cycle->color %></td>
我不需要设置sqlite_unicode属性来让我的例子工作。也就是说,为Rose :: DB添加一个方法可能是值得的。我会添加到我的TODO。 – 2011-02-15 23:52:37