Какой набор символов является стандартным набором символов для NSString, когда я набираю содержимое из UITextField?NSString: работа с API на основе UTF8
Я разработал приложение, которое отправляет такие NSStrings в REST-API на основе UTF8. На бэкэнде есть MySQL-база данных на основе utf8, а также varchar-поля на основе utf8. Мой POST-запрос отправляет строковые данные из приложения iOS на сервер. И с помощью GET-Request я получаю эти строки из REST API.
В приложении все напечатано в порядке. Специальные символы UTF-8 - Персонажи, подобные ÄÖÜ, отображаются правильно после отправки их на сервер и после получения их обратно.
Но когда я вхожу в mysql-консоль сервера REST API и выполняю SELECT-команду при этих данных, там отображаются поврежденные символы.
Что может быть причиной? В каких наборах символов Apple использует NSString?
utf8mb4, как следует из его названия, добавляет 4-байтовые символы utf8. Это происходит у нескольких китайских иероглифов, новых смайликов и нескольких других ситуаций. Если вы не используете ни одно из них, то utf8mb4 не имеет значения. –
4-байтные символы UTF-8 - это больше, чем «несколько китайских иероглифов, некоторые новые смайлики». Большинство символов emoji находятся в плоскости-1 и требуют 4 байта для кодировки UTF-8, UTF-16 или UTF-32. Проблема заключается в том, что MySQL выделяет только 3 байта для своего нестандартного «utf8» и называет его так, как будто он поддерживает UTF-8- «bad MySQL». Это работало до тех пор, пока символы не были помещены в плоскость-1. UTF-8 - от одного до четырех байтов. Обратите внимание, что во многих случаях пользователь использует тот, кто использует emoji и другие символы plane-1, но не поддерживает их, является близоруким и ограничивает пользователей. – zaph