使用ASPX渲染法语重音字符有什么问题吗?
我正在使用utf-8进行编码。
我之前从未遇到过这样的问题(但是因为这是我第一次在ASP服务器上工作有没有修复?)
e.g Événements=Événements Journéesfériées=Journéesfériées
这是编码问题吗?或者是否需要放置任何特定代码才能正确呈现它。
这是一个example
该页面显示为:
Pour recevoir les communications de l’école par courriel, veuillez nous indiquer votre adresse courriel
应该是:
Pour recevoir les communications de l'école par courriel, veuillez nous indiquer votre adresse courriel
答案 0 :(得分:3)
究竟是什么问题?您是否在文件顶部的页面指令中设置了@ Codepage = 65001?您是否使用正确的编码标记了内容类型,以便客户端知道它的内容?
如果您看到问号,则可能是您未正确设置响应代码页。如果您看到两个不相关的字符代替具有变音符号的单个字符,则您没有告诉客户端将页面视为UTF-8需要知道什么,例如
Response.CodePage = 65001 ;
Response.CharSet = "utf-8" ;
asp.net和asp处理编码之间存在细微差别,因此如果您更具体地了解您正在使用哪种技术,那么它也会有所帮助,但这应该可以帮助您完成大部分工作。
在ASP.Net中,您可以在web.config文件中设置站点范围内的编码,这样可以避免在每个页面上弄乱Response.CodePage和Request.CodePage。您仍然希望使用HTML中的元http-equiv content-type元素或使用Response.Charset来标记Response Charset。
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8" />
如果您出于某种原因不想使用web.config,则使用&lt;%@ CodePage = 65001%&gt;在页面指令中输出任何文本之前,在.aspx文件中。
看起来有问题的页面包含错误编码的UTF-8。内容是直接来自.aspx文件,还是从数据库中提取出来的?
答案 1 :(得分:0)
我的第一个问题是你没有为utf-8发送正确的标题。 但是在web-sniffer使用标题阅读器会显示标题是正确的。
问题似乎是您已将文本转换为utf-8 两次。
当我使用ISO-8859-1编码使用Firefox“查看页面源”查看页面的HTML源代码时,示例文本显示为:
Pour recevoir les communications delÕ•©Cole par courriel,veuillez nous indiquer votre adresse courriel
也就是说,单词l'école中的2个非ASCII字符已被转换为5个字节,然后这5个字节再次转换为12个字节。
答案 2 :(得分:0)
尝试使用:Server.HTMLEncode(strToShow)
答案 3 :(得分:-1)
有没有使用HTML编码的原因,而不是使用实际字符?
所以而不是
EVENEMENTS
使用
Événements
然后用户浏览器负责正确呈现字符。
上有一个完整的列表答案 4 :(得分:-2)
只需重命名文件.asp而不是.aspx
这将解决问题。