Я использую Perl ORM Rose :: DB :: Object и сопоставление таблицы / столбца MySQL utf8_general_ci
. Код для сохранения данных:
Motorcycle->new(
type => $self->param('type'),
brand => $self->param('brand'),
color => $self->param('color')
)->save;
Код для извлечения данных в Mojolicious (код эквивалентен utf8::decode
):
<td><%= Mojo::ByteStream->new($cycle->type)->decode('utf-8') %></td>
<td><%= Mojo::ByteStream->new($cycle->brand)->decode('utf-8') %></td>
<td><%= Mojo::ByteStream->new($cycle->color)->decode('utf-8') %></td>
Китайские иероглифы прекрасно выглядят в моем приложении, но они кажутся странными в phpMyAdmin. Если я сохраню символы в phpMyAdmin, они будут в порядке в phpMyAdmin, но выглядят странно в моем приложении.
Я протестировал его в SQLite и с надстройкой Firefox SQLite, и символы хорошо выглядят как в надстройке Firefox SQLite, так и в моем приложении.
Я думаю, что это проблема с сервером. Если я объединю Perl с PHP, это может стать катастрофой.
Спасибо за помощь.
РАЗРЕШЕНО, как показано ниже:
__PACKAGE__->use_private_registry;
__PACKAGE__->default_connect_options( mysql_enable_utf8 => 1 );
__PACKAGE__->register_db(
driver => 'mysql',
database => 'test',
host => 'localhost',
username => 'root',
password => '',
Важно добавить эту строку в:
__PACKAGE__->default_connect_options( mysql_enable_utf8 => 1 );
При чтении данных декодирование не требуется.