#javascript #react-native #character-encoding
#javascript #react-native #кодировка символов
Вопрос:
Я создаю приложение в React, которое получает определенную HTML-страницу и преобразуется в страницу в React, но когда a помещает некоторую строку в <Text>
, эти символы не преобразуются:
Представление amp;#8212;
является —
.
Как называются эти символы? Есть ли способ в React преобразовать эти символы в соответствующий им текст?
Ответ №1:
Эти символы называются объектами символов HTML. Многие математические, технические символы и символы валюты отсутствуют на обычной клавиатуре.
Если имя объекта не существует, вы можете использовать номер объекта, десятичную или шестнадцатеричную ссылку.
Быстрый обходной путь для одной известной вам html-сущности:
<Text>
{yourText.replace(/amp;#8212;/gi, '-')}
</Text>
Вы могли бы использовать этот модуль npm для декодирования текста перед визуализацией:
Пример для нескольких объектов html
const re = /amp;[^s]*;/gi;
const allHtmlEntities = [];
while ((match = re.exec(youtText)) != null) {
const htmlEntity = yourText.substring(match.index, 7);
if (allHtmlEntities.indexOf(htmlEntity) === -1) {
allHtmlEntities.push(htmlEntity);
}
}
const entities = new Entities();
for (let i = 0; i < allHtmlEntities.length; i ) {
const decodedValue = entities.decode(allHtmlEntities[i]);
yourText = yourText.replace(new RegExp(allHtmlEntities[i], 'g'), decodedValue);
}
Комментарии:
1. @Syed к сожалению, они не интерпретируются автоматически
react-native
… итак, я думаю, тогда нам понадобится какой-тоregex
способ перехватить все эти элементы HTML-СИМВОЛОВ и использовать npm, который я упомянул в ответе, для его преобразования