重音法国人物

时间:2010-03-01 17:38:35

标签: asp.net encoding character-encoding internationalization

使用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

5 个答案:

答案 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

使用

&Eacute;v&eacute;nements 

然后用户浏览器负责正确呈现字符。

http://www.w3schools.com/tags/ref_entities.asp

上有一个完整的列表

答案 4 :(得分:-2)

只需重命名文件.asp而不是.aspx

这将解决问题。