Я должен переместить базу данных MySQL с latin1_swedish_ci сопоставлением к utf-8 и, если так, как?

Таким образом, вы хотите запретить вызов build() вашей домашней страницы, когда она не видна. Вот что вы можете попробовать.

bool _isHomeVisible = true;

@override
Widget build(BuildContext context) {
  return _isHomeVisible ? YourWidgetImplementation() : Container();
}

И перед тем, как перейти, сделайте это.

void _navigateToNewPage() {
  _isHomeVisible = false; // going to new page, make it false
  Navigator.push(...).then((_) {
    _isHomeVisible = true; // coming back to home page, make it true
  });
}
7
задан Olly 13 October 2008 в 11:16
поделиться

3 ответа

UTF-8, а также любая другая схема кодирования Unicode, может сохранить символы на любом языке, таким образом, это - отличный выбор кодовой страницы для Вашей базы данных.

Установка сопоставления, с другой стороны, является абсолютно отдельным вопросом из схемы кодирования. Это включает порядки сортировки, верхние/строчные преобразования, строковые сравнения равенства и подобные вещи, которые являются определенными для языка. Установка сопоставления должна соответствовать языку, который используется в базе данных.

Общее сопоставление UTF-8 (я принимаю здесь — я не знаком с MySQL в особенности), используемый для ситуаций, где язык неизвестен, и некоторое простое упорядочивание по умолчанию необходимо. Это, вероятно, соответствует упорядочиванию кодовой точки Unicode, которое является почти наверняка не, что Вы хотите при хранении шведского языка.

4
ответ дан 7 December 2019 в 10:10
поделиться

Преобразуйте в UTF-8 как набор символов.

Настройки сопоставления только используются для сортировки и материала как этот. Выберите сопоставление, которое ожидало бы большинство Ваших пользователей.

1
ответ дан 7 December 2019 в 10:10
поделиться

Обеспечение Ваших существующих данных в базе данных ПРАВИЛЬНО кодируется в latin1, преобразовывая таблицы в utf8 (использующий ALTER TABLE, как описано в документах) должен просто работать.

Затем все Ваше приложение должно сделать, продолжают делать независимо от того, что оно сделало прежде. Если Ваше приложение хочет использовать unicode символы, оно должно установить свое кодирование соединения на utf8 и использовать utf8, но это - его собственная проблема.


Проблема состоит в том, что большое количество загаженных веб-приложений исторически отправило utf8 данные в mysql и сказало этому рассматривать его как latin1. MySQL будет соблюдать это отлично и сохранять спам в таблицы, как проинструктировано.

Преобразовывание таблиц от latin1 до utf8 НЕ восстановит эту ошибку, поскольку у Вас действительно есть общий мусор там. Восстановление их нетривиально, особенно если в течение времени жизни приложения оно говорило различные типы мусора к базе данных.

1
ответ дан 7 December 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: