OK, w końcu udało mi się sprawić, żeby wszystko działało! Dziękuję wszystkim, którzy próbowali mi pomóc, zwłaszcza @Rick James i @Gerard Roche.
SUGER:
Jeśli potrzebujesz pracować z emotikonami, najpierw wykonaj proste testy na lokalnym hoście. Utwórz nową bazę danych i stwórz nową aplikację do celów testowych.
Jeśli postępujesz zgodnie z instrukcjami, które napisałem w pytaniu lub jeśli podążasz za tym samouczkiem: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 to musi działać.
Pracując lokalnie na nowej, podstawowej aplikacji, będziesz mieć większą kontrolę i więcej miejsca na wykonanie wszystkich potrzebnych testów.
ROZWIĄZANIE:
W moim przypadku problem tkwił w konfiguracji bazy danych w CodeIgniterze. Nie skonfigurowano prawidłowo zestawu znaków i sortowania dla głupiego przeoczenia:nadpisałem ustawienia bazy danych w funkcji, która zapisuje wiadomości, aby upewnić się, że działa z mobilną bazą danych.
PRZED:
function message_save ( $data = FALSE )
{
$project_db_config = array();
$project_db_config['hostname'] = 'MY_HOST';
$project_db_config['username'] = 'MY_USERNAME';
$project_db_config['password'] = 'MY_PASSWORD';
$project_db_config['database'] = 'MY_DATABASE';
$mobile_db = $this->load->database( $project_db_config, TRUE );
// other code to save message
}
PO:
function message_save ( $data = FALSE )
{
$mobile_db_connection = $this->load->database('admin_mobile_mh', TRUE);
// other code to save message
}
WNIOSEK:
Aplikacja musi prawidłowo ustawić połączenie z bazą danych.Jeśli masz poprawnie skonfigurowaną bazę danych, ale nie nawiążesz prawidłowego połączenia z aplikacją, nie będzie ona działać.
Więc jeśli napotkasz podobne problemy, upewnij się, że interfejs API prawidłowo skonfiguruj char_set
jako utf8mb4
i db_collat
jako utf8mb4_unicode_ci
.