#iphone #mysql #character-encoding #blob
#iPhone #mysql #кодировка символов #большой двоичный объект
Вопрос:
У меня есть приложение для iphone, которое преобразует изображение в NSData, а затем преобразует в строку в кодировке base64.
Когда эта закодированная строка отправляется на сервер в базе данных сервера, при хранении на сервере ‘ ‘ преобразуется в ‘пробел’, и поэтому декодер не работает должным образом.
Я предполагаю, что проблема связана с кодировкой таблицы по умолчанию в базе данных. В настоящее время это латиница, я попытался изменить ее на UTF8, но проблема все еще сохраняется.
Любая другая кодировка, пожалуйста, помогите
Ответ №1:
Конечно, это не имеет никакого отношения к кодированию. Именно формат POST
параметров GET
и создает конфликт с base64. В http://en.wikipedia.org/wiki/Base64#Variants_summary_table вы видите альтернативы, которые предназначены для того, чтобы заставить base64 работать с URL-адресами и т.д.
Одним из этих вариантов является «Base64 с безопасным алфавитом URL и имени файла (кодировка RFC 4648 ‘base64url’)», который заменяет
with -
и /
with _
.
Другой альтернативой было бы заменить символы-нарушители /=
их соответствующими шестнадцатеричными представлениями на %xx
— но это делает данные излишне длинными.
Комментарии:
1. : Итак, что я должен делать? Я должен изменить логику кодирования или я должен преобразовать эту закодированную строку в строку с кодировкой url, чтобы быть уверенным, что универсальный декодер, такой как openssl, может декодировать мои отправленные данные?
2. Вы можете выполнить любой из них, в зависимости от того, что у вас есть на принимающей стороне. Замена довольно проста, а также urlencoding — делайте то, что вам больше подходит.