catalyst支持unicode的重要配置

痛苦了两天,终于在catalyst里边可以正确处理汉字了。
最后起到关键作用的还是一个catalyst的plugin:Catalyst::Plugin::Unicode

加载了这个之后,就基本上提交汉字也正常了。
主要注意的配置如下红色:
Mysql里边的表用utf8编码:
CREATE TABLE `change_event` (
  `event_id` int(11) NOT NULL auto_increment,
  `event_time` date default NULL,
  `app` varchar(20) default NULL,
  `cat` varchar(20) default NULL,
  `event_type` varchar(20) default NULL,
  `title` varchar(300) default NULL,
  `content` text,
  PRIMARY KEY  (`event_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CBS.pm主模块加载unicode plugin:
use Catalyst qw/
-Debug
ConfigLoader
Static::Simple
StackTrace
Session
Session::Store::FastMmap
Session::State::Cookie
Unicode
/;

DBIx::Class配置一个utf8编码的表
greatdba:/home/robin/CBS/lib/CBSDB # more Change_event.pm
package CBSDB::Change_event;
use base qw/DBIx::Class/;

__PACKAGE__->load_components(qw/ UTF8Columns PK::Auto Core /);
__PACKAGE__->table('change_event');
__PACKAGE__->add_columns(qw/ event_id event_time app cat event_type title content /);
__PACKAGE__->utf8_columns(qw/ event_id event_time app cat event_type title content /);
__PACKAGE__->set_primary_key( qw/ event_id /);

1;
DBIx::Schema的重要配置:
greatdba:/home/robin/CBS/lib/CBS/Model # more CBSDB.pm
package CBS::Model::CBSDB;

use strict;
use base 'Catalyst::Model::DBIC::Schema';

__PACKAGE__->config(
    schema_class => 'CBSDB',
    connect_info => [
        'dbi:mysql:database=dbStatus:host=172.23.16.100',
        'dbstatus',
        '******',
        {
           'on_connect_do' => ["SET NAMES 'latin1'"]
         },
    ],
);


请使用浏览器的分享功能分享到微信等