Замените символы в строке, чтобы соответствовать браузеру, C #, из кодировки UTF8 - PullRequest
0 голосов
/ 21 сентября 2011

Мне нужно заменить символы å, ä, ö на дружественные браузеру символы. Например, ä должно стать% E4.

Я пробовал weirdString = Uri.EscapeUriString (weirdString); Но это не превращает Аяо в правильный знак. Помогите пожалуйста?

Редактировать: пробовал это:

ASCIIEncoding ascii = new ASCIIEncoding(); 
byte[] asciicharacters = Encoding.UTF8.GetBytes("vägen");
byte[] asciiArray = Encoding.Convert(Encoding.UTF8, Encoding.ASCII, asciicharacters);
string finalString = ascii.GetString(asciiArray);
string fixedAddrString = HttpUtility.HtmlEncode(finalString);

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Если вам нужно, чтобы символы отображались на странице и не являлись частью URL, вам следует использовать Server.HtmlEncode.

var encodedString = Server.HtmlEncode(myString); 

Кодировка HTML обеспечивает правильное отображение текста в браузере и не интерпретируется браузером как HTML. Например, если текстовая строка содержит знак меньше (<) или знак больше (>), браузер интерпретирует эти символы как открывающую или закрывающую скобку тега HTML. Когда символы кодируются в формате HTML, они преобразуются в строки <и>, в результате чего браузер правильно отображает знак «меньше» и «больше».


Обновление:

Поскольку вы используете UTF-8, эти символы экранируются в UTF-8, а не в ASCII.

Вам нужно преобразовать строку из UTF-8 в ASCII, используя классы Encoding, прежде чем пытаться их избежать. То есть, если вы хотите, чтобы значения ASCII появлялись.

См. здесь .

0 голосов
/ 21 сентября 2011

Попробуйте HttpUtility.HtmlDecode. Если этот doesent тоже работает, вы можете сделать простую строку. Замените эти символы.

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