X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FUTF8Columns.pm;h=f060f817cc43c3bd8e12da4f75717aa4415cbf28;hb=096f421241;hp=c04c07377267e8deb2f5560b940f621e931471e3;hpb=4e8964d53864dc5ce61100fcf1418520a935a520;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/UTF8Columns.pm b/lib/DBIx/Class/UTF8Columns.pm index c04c073..f060f81 100644 --- a/lib/DBIx/Class/UTF8Columns.pm +++ b/lib/DBIx/Class/UTF8Columns.pm @@ -3,7 +3,16 @@ use strict; use warnings; use base qw/DBIx::Class/; -use Encode; +BEGIN { + + # Perl 5.8.0 doesn't have utf8::is_utf8() + # Yes, 5.8.0 support for Unicode is suboptimal, but things like RHEL3 ship with it. + if ($] <= 5.008000) { + require Encode; + } else { + require utf8; + } +} __PACKAGE__->mk_classdata( '_utf8_columns' ); @@ -60,7 +69,12 @@ sub get_column { my $cols = $self->_utf8_columns; if ( $cols and defined $value and $cols->{$column} ) { - Encode::_utf8_on($value) unless Encode::is_utf8($value); + + if ($] <= 5.008000) { + Encode::_utf8_on($value) unless Encode::is_utf8($value); + } else { + utf8::decode($value) unless utf8::is_utf8($value); + } } $value; @@ -75,7 +89,12 @@ sub get_columns { my %data = $self->next::method(@_); foreach my $col (grep { defined $data{$_} } keys %{ $self->_utf8_columns || {} }) { - Encode::_utf8_on($data{$col}) unless Encode::is_utf8($data{$col}); + + if ($] <= 5.008000) { + Encode::_utf8_on($data{$col}) unless Encode::is_utf8($data{$col}); + } else { + utf8::decode($data{$col}) unless utf8::is_utf8($data{$col}); + } } %data; @@ -90,7 +109,12 @@ sub store_column { my $cols = $self->_utf8_columns; if ( $cols and defined $value and $cols->{$column} ) { - Encode::_utf8_off($value) if Encode::is_utf8($value); + + if ($] <= 5.008000) { + Encode::_utf8_off($value) if Encode::is_utf8($value); + } else { + utf8::encode($value) if utf8::is_utf8($value); + } } $self->next::method( $column, $value );