psql=# create database novels owner ron encoding 'UTF8';
####
"author","category","title","rating","comment","isbn","publisher","publication_date","review_date"
"Colm Tóibín","Novel","The South","***","-","-","Picador","-","2012-06-12"
####
use feature 'unicode_strings';
use open qw/:std :utf8/;
...
# DBIx::Class:
my($rs) = $schema -> resultset('Author');
my($result);
for (sort keys %$data)
{
$result = $rs -> create({name => $_, upper_name => uc $_});
}
####
novels=# select * from authors where name like 'Colm%';
id | name | upper_name
-----+-------------+-------------
100 | Colm Tóibín | COLM TóIBíN
(1 row)
####
use feature qw/say unicode_strings/;
use open qw/:std :utf8/;
use Encode qw/decode encode/;
...
my($row) = $sth -> fetchall_hashref('id');
my($name) = $$row{100}{name};
my($decode) = decode('utf8', $name);
my($json) = JSON::XS -> new -> utf8(0) -> encode({name => $decode});
say "name: $name.";
say "decode: $decode.";
say "json: $json.";
####
ron@zigzag:~/perl.modules/Local-Novels$ perl scripts/test.utf8.pl
name: Colm TóibÃn.
decode: Colm Tóibín.
json: {"name":"Colm Tóibín"}.
####
####
use feature 'unicode_strings';
use Encode 'decode';
...
while (my $item = $rs -> next)
{
push @$result,
{
author_name => decode('utf8', $item -> author -> name),
...
}
}
...
$output = {results => $result};
return JSON::XS -> new -> utf8(0) -> encode($output);
####
return JSON::XS -> new -> utf8(1) -> encode($output);