У меня есть строка в столбце VARCHAR () в таблице в базе данных Sybase, которая содержит символы Unicode.
Когда я пытаюсь получить эту строку, она возвращается, НО флаг UTF8 неустановить на него
my $sql = qq[select x from my_table where id=something];
my $sth = $dbHdl->prepare($sql);
eval { $results = $sth->execute() };
$cols = $sth->{NAME};
$results = $sth->fetchall_arrayref({});
Когда я печатаю результаты $ из приведенного выше кода, он печатает правильный символ Unicode:
DB<4> x $results
0 ARRAY(0x93b02c0)
0 HASH(0xbcf3700)
'x' => 'Prefix € Suffix'
Однако, проверка, является ли этоСтрока UTF8, возвращает false:
DB<8> x Encode::is_utf8($results->[0]->{x})
0 ''
В качестве дополнительной проверки вызов length()
показывает 17
вместо 15
, как будет отображаться строка Unicode.
Что я делаю неправильно?Нужно ли как-то изменить строку подключения?