在我的web.config中我有
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
在我的页面指令中我有
ResponseEncoding="utf-8"
但由于某种原因,带有TextMode =“MultiLine”的ASP TextBox允许输入UTF-8之外的字符。当我将以下文本行粘贴到不是MultiLine的ASP TextBox
时“test”
替换非UTF-8字符,但在使用MultiLine TextBox时则不会。
任何想法为什么?
编辑: 为了解释一下设置我看到这个问题,这里有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,并将带有引号的测试行复制并粘贴到这四种不同类型的文本区域中,为什么字体是否会有所不同?
答案 0 :(得分:3)
只是添加一些说明...... UTF-8是一种涵盖所有Unicode字符的字符编码方案。因此,没有任何“非UTF-8字符”。
字符串的编码与屏幕上这些字符的图形表示无关(例如,在网页的&lt; input type =“text”&gt;或&lt; textarea&gt;&lt; / textarea&gt;控件中) 。在您的示例中,某些字体将typographer的引号显示为直引号,而其他字体则显示与引号相同的UTF-8字符。
ResponseEncoding设置确定传输的字节数,以表示构成页面HTML的字符以及表单帖子和URL中编码的字符返回页面。常见的编码是UTF-8,ISO 8859-1和windows-1252。这些编码有很多相似之处,但它们也有不同之处。但是,您可以使用windows-1252字符集和编码(也包括那些卷曲引号字符)来传递完全相同的页面,您会看到完全相同的结果。
简而言之,不要将字符编码与字体样式混淆。
顺便说一下,你的ResponseEncoding =“utf-8”指令是多余的,因为在web.config中设置了相同的东西。无论如何UTF-8是默认设置,因此您甚至可能不需要在web.config中使用它。
答案 1 :(得分:1)
您看到的是应用于文本区域(多行文本框)和文本框(输入)的不同默认字体。文本区域使用Courier New,单行文本框使用Arial。如果您应用将text-family设置为textbox和textarea相同的样式,则粘贴的文本将匹配。试试这些,您应该看到粘贴的内容完全匹配:
<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>