В настоящее время я сталкиваюсь с проблемой, которая сводит меня с ума:
Следующий фрагмент кода является частью обертки для отправки запроса в Facebook для создания нового сообщения.Это работает отлично для непосредственно отправленных и не запланированных сообщений в настоящее время.Я добавил char[]
и chars
для целей отладки.
public GenericResponse createNewPost(final String accessToken, final String target, final String message)
{
char[] messageRawBytes = message.toCharArray();
int char1 = (int) messageRawBytes[0];
int char2 = (int) messageRawBytes[1];
final String URL = SystemParameters.FB_API_BASE_URL + target + "/feed?access_token=" + accessToken;
final Map<String, String> params = new TreeMap<>();
params.put("message", message);
return new PostRequest(URL, params).send();
}
Каждый раз (из базы данных или непосредственно из REST API) он входит в функцию, Emoji represented представляетсязначения char 55357
и 56613
(что правильно для UTF-16
) каждый раз, и String message
выглядит одинаково в отладчике, и после этого нет другой разницы.Тем не менее, Facebook отображает ?
только тогда, когда сообщение было прочитано из базы данных, и отображает только надлежащие эмодзи, когда публикуется непосредственно через API REST.
Что я здесь наблюдаю?Это, очевидно, кажется некоторой проблемой с кодировкой, но поскольку строка String message
всегда имеет одно и то же значение, она не может быть чем-то еще для дальнейшей обработки, не так ли?