ASP.NET Многострочное текстовое поле, позволяющее вводить выше UTF-8 - PullRequest
0 голосов
/ 07 февраля 2010

В моем web.config у меня есть

<globalization
  fileEncoding="utf-8"
  requestEncoding="utf-8"
  responseEncoding="utf-8"
  culture="en-US"
  uiCulture="de-DE"
/>

В директиве моей страницы у меня есть

ResponseEncoding="utf-8"

Тем не менее, по какой-то причине ASP TextBox с TextMode = "MultiLine" позволяет вводить символы вне UTF-8. Когда я вставляю следующую строку текста в ASP TextBox, который не является MultiLine

“test”

заменяются символы, отличные от UTF-8, но не при использовании MultiLine TextBox.

Есть идеи, почему?

EDIT: Чтобы объяснить немного больше настроек, в которых я вижу эту проблему, вот 4 текстовых области, которые могут быть помещены на страницу ASP.

<asp:TextBox ID="txtTest1" runat="server"></asp:TextBox>
<asp:TextBox ID="txtTest2" runat="server" TextMode="MultiLine"></asp:TextBox>
<input id="Text1" runat="server" />
<textarea id="Textarea1" cols="100" rows="8" runat="server"></textarea>

Если вы создаете страницу с ResponseEncoding в вашей директиве страницы, ваш web.config с вкладкой глобализации, описанной выше, и копирует и вставляет тестовую строку с кавычками в каждую из этих 4 различных типов текстовых областей, почему шрифт отличается?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2010

Просто для пояснения ... UTF-8 - это схема кодировки символов, которая охватывает все символы Юникода. Поэтому не существует такой вещи, как «не UTF-8 символ».

Кодировка строки не имеет ничего общего с графическим представлением этих символов на экране (например, в элементах или веб-страницы). В вашем примере некоторые шрифты отображают кавычки типографа как прямые кавычки, в то время как другие отображают тот же символ UTF-8, что и кавычки.

Параметр ResponseEncoding определяет, какие байты передаются для представления символов, составляющих HTML-код вашей страницы, и символов, закодированных в сообщениях формы и URL-адресах, на вашу страницу. Общими кодировками являются UTF-8, ISO 8859-1 и windows-1252. Эти кодировки имеют много общего, но они также имеют свои различия. Тем не менее, вы можете доставить ту же самую страницу, используя набор символов и кодировку windows-1252 (который также включает в себя эти фигурные кавычки), и вы увидите точно такой же результат.

Итак, в двух словах, не путайте кодировку символов со стилями шрифтов.

Кстати, ваша директива ResponseEncoding = "utf-8" является избыточной, поскольку в web.config установлено то же самое. В любом случае UTF-8 используется по умолчанию, поэтому он может даже не понадобиться в вашем файле web.config.

1 голос
/ 10 февраля 2010

То, что вы видите, - это различные шрифты по умолчанию, которые применяются к текстовой области (многострочное текстовое поле) стиха (ввод). Текстовые области используют Courier. Новые и однострочные текстовые поля используют Arial. Если вы применяете стиль, который устанавливает семейство шрифтов одинаковым как для текстового поля, так и для текстовой области, то вставленный текст будет совпадать. Попробуйте это, и вы должны увидеть, что все вставленное содержимое точно соответствует:

<asp:TextBox ID="txtTest1" runat="server" style="font-family: Courier New;"></asp:TextBox>
<asp:TextBox ID="txtTest2" runat="server" TextMode="MultiLine" style="font-family: Courier New;"></asp:TextBox>
<input id="Text1" runat="server" style="font-family: Courier New;" />
<textarea id="Textarea1" cols="100" rows="8" runat="server" style="font-family: Courier New;"></textarea>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...