JSON разбирать эмодзи юникод сбой мой реагировать родной проект - PullRequest
1 голос
/ 28 июня 2019

Всякий раз, когда я пытаюсь отобразить некоторые данные, полученные в моем проекте React Native от моей конечной точки API, я получаю эту ошибку синтаксического анализа JSON: JSON parse error on line 0 near .."}], [18933, "RC': expected another Unicode escape for the second half of surrogate pair

Очевидно, что для escape-символа Unicode отсутствует escape-символ.

Моя строка "Вы можете попробовать, но я так не думаю" 1006 *

Я попытался напечатать строку в консоли, и она отображается нормально, но когда я пытаюсь отобразить ее в компоненте <Text></Text> React Native, мое приложение вылетает.

Любое руководство будет оценено.

Ответы [ 2 ]

1 голос
/ 29 июня 2019

UPDATE

Я обнаружил, что проблема была в методе JavaScript String.substring(). Он не знает, как правильно разделить суррогатные пары Юникода, и поэтому попытается разбить строку в середине пары, если вам не повезло с позиционированием.

Я решил проблему, используя библиотеку под названием «руны», которая правильно разбивает и принимает подстроку строки с соблюдением суррогатных пар Юникод.

Проблема: postComment.substring(0, 35) Решение: runes.substr(postComment, 0, 35)

Просто установите библиотеку runes и используйте runes.substr(yourString, start, end) для обработки суррогатных пар Юникод в вашей строке:)

1 голос
/ 28 июня 2019

Отказ от ответственности : Это скорее предположение, поскольку у меня есть только ваша ошибка и ? emoji для работы.

Unicode-символ для «ЛИЦА С СЛЕЗАМИ РАДОСТИ» равен (U+1F602), а суррогатная пара - \uD83D\uDE02.

Если вы введете \uD83D\uDE02 в текстовом компоненте, и это работает, то вы можете конвертировать, используя

function findSurrogatePair(point) {
  // assumes point > 0xffff
  var offset = point - 0x10000,
      lead = 0xd800 + (offset >> 10),
      trail = 0xdc00 + (offset & 0x3ff);
  return [lead.toString(16), trail.toString(16)];
}

// find pair for U+1F602
findSurrogatePair(0x1f602); // ["d83d", "de02"]

Справка + кредит: http://crocodillon.com/blog/parsing-emoji-unicode-in-javascript

Отказ от ответственности : это скорее предположение, поскольку у меня есть только ваша ошибка и ? emoji для работы.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...