У строки, скопированной с сайта, есть '', которая выводится как '?' - PullRequest
0 голосов
/ 18 января 2020

Я очищаю веб-сайт, на котором есть строка с  . Я сохраняю строку как: string head = h.TextContent;.

Когда я выводю строку, я вижу ? везде, где &nbsp находится в строке. Я попытался изменить кодировку строки на Unicode и UTF-16, попытался заменить   в самой строке, а также попытался заменить ?. Кажется, ничего не работает.

Это консольный проект в C#.

Что я пробовал:

Byte[] encodedBytes = unicode.GetBytes(head);
string decodedHead = unicode.GetString(encodedBytes).Replace('&', ' ');

И

head = head.Replace('?','');
head = head.Replace(' ','');
head = head.Replace('&','');

1 Ответ

2 голосов
/ 18 января 2020

  - это HTML объект, который обозначает неразрывный пробел . Поэтому, когда вы получите текстовое содержимое, оно не будет содержать  . Вместо этого он будет содержать неразрывный пробел. Я думаю, консоль не знает, как отобразить этот символ, поэтому она просто выводит ?.

Если вы хотите избавиться от него, вы можете заменить его на простой пробел:

head = head.Replace("\u00A0", " ");

00A0 - это код Unicode для символа неразрывного пробела.

Будьте осторожны, если вы намерены делать больше с текстом, чем просто отображать его в консоли или выполнять некоторые простые манипуляции. Обычно для этого есть неразрывный пробел, поскольку он запрещает перенос текста между словами. Например, 100 км не следует заключать между 100 и км .

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