Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET多行文本框,允许UTF-8以上的输入_Asp.net_Encoding_Utf 8_Textbox_User Input - Fatal编程技术网

ASP.NET多行文本框,允许UTF-8以上的输入

ASP.NET多行文本框,允许UTF-8以上的输入,asp.net,encoding,utf-8,textbox,user-input,Asp.net,Encoding,Utf 8,Textbox,User Input,在我的web.config中,我有 <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="de-DE" /> 但由于某些原因,带有TextMode=“MultiLine”的ASP文本框允许输入UTF-8之外的字符。当我将以下文本行粘贴到非多行的ASP文本框中时 “test” 非UTF-8字符将

在我的web.config中,我有

<globalization
  fileEncoding="utf-8"
  requestEncoding="utf-8"
  responseEncoding="utf-8"
  culture="en-US"
  uiCulture="de-DE"
/>
但由于某些原因,带有TextMode=“MultiLine”的ASP文本框允许输入UTF-8之外的字符。当我将以下文本行粘贴到非多行的ASP文本框中时

“test”
非UTF-8字符将被替换,但在使用多行文本框时不会被替换

你知道为什么吗

编辑: 为了进一步解释我所看到的这个问题的设置,这里有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种不同类型的文本区域中,为什么字体会不同?

您看到的是应用于文本区域(多行文本框)和文本框(输入)的不同默认字体。文本区域使用Courier New,单行文本框使用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>

您看到的是应用于文本区域(多行文本框)和文本框(输入)的不同默认字体。文本区域使用Courier New,单行文本框使用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>

我只是想澄清一下。。。UTF-8是一种涵盖所有Unicode字符的字符编码方案。因此,没有“非UTF-8字符”这样的东西

字符串的编码与屏幕上这些字符的图形表示无关(例如,在网页或控件中)。在您的示例中,有些字体将排字员的引号显示为直引号,而另一些字体将UTF-8字符显示为卷曲引号

ResponseEncoding设置确定传输哪些字节来表示组成页面HTML的字符,以及以表单POST和URL形式编码回页面的字符。常见的编码是UTF-8、ISO 8859-1和windows-1252。这些编码有很多相似之处,但也有不同之处。但是,您可以使用windows-1252字符集和编码(其中还包括那些卷曲引号字符)交付完全相同的页面,您将看到完全相同的结果

因此,简而言之,不要将字符编码与字体样式混淆


顺便说一下,您的ResponseEncoding=“utf-8”指令是多余的,因为在web.config中设置了相同的内容。而且UTF-8是默认的,所以您甚至可能不需要在web.config中使用它。

只需添加一些说明。。。UTF-8是一种涵盖所有Unicode字符的字符编码方案。因此,没有“非UTF-8字符”这样的东西

字符串的编码与屏幕上这些字符的图形表示无关(例如,在网页或控件中)。在您的示例中,有些字体将排字员的引号显示为直引号,而另一些字体将UTF-8字符显示为卷曲引号

ResponseEncoding设置确定传输哪些字节来表示组成页面HTML的字符,以及以表单POST和URL形式编码回页面的字符。常见的编码是UTF-8、ISO 8859-1和windows-1252。这些编码有很多相似之处,但也有不同之处。但是,您可以使用windows-1252字符集和编码(其中还包括那些卷曲引号字符)交付完全相同的页面,您将看到完全相同的结果

因此,简而言之,不要将字符编码与字体样式混淆


顺便说一下,您的ResponseEncoding=“utf-8”指令是多余的,因为在web.config中设置了相同的内容。UTF-8是默认值,因此您甚至可能不需要在web.config中使用它。

有趣的是,我认为web.config级别的设置和Page指令会在ASP转换为html时将这些设置传递给所有控件。谢谢杰夫,我来试试。嗯。。。我认为您不能在web.config或Page指令中设置字体系列。如果愿意,可以在全局css样式表中设置字体系列。您认为您在web.config中设置的哪些设置会改变文本框的字体系列?标签在最开始处。这是“全球化”,是web.config的一部分。我从以下MSDN文章中得到了这些信息:全球化不会驱动所使用的字体。字体严格来自页面上设置的样式(或文本框的默认样式)。全球化将在显示日期或货币时发挥作用(指定的月、日、年的顺序,或用于分隔美元和美分的逗号或句点等)。用于在文本框中显示文本的字体不是来自全球化设置。有趣的是,我认为web.config级别的设置和Page指令会在ASP转换为html时将这些设置传递给所有控件。谢谢杰夫,我来试试。嗯。。。我认为您不能在web.config或Page指令中设置字体系列。如果愿意,可以在全局css样式表中设置字体系列。您认为您在web.config中设置的哪些设置会改变文本框的字体系列?标签在最开始处。这是“全球化”,是web.config的一部分。我从以下MSDN文章中得到了这些信息:全球化不会驱动所使用的字体。字体严格地来源于样式t