catalyst支援unicode的重要配置

bulletming發表於2018-12-18
痛苦了兩天,終於在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'"]
         },
    ],
);


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82392/viewspace-332656/,如需轉載,請註明出處,否則將追究法律責任。

相關文章