【问题标题】:ASPX page with a User Control not working with localization带有用户控件的 ASPX 页面不适用于本地化
【发布时间】:2011-01-21 19:21:11
【问题描述】:

我有一个使用 ASPX 和 C# 的项目。所有页面都通过重写的 InitializeCulture 方法支持本地化。除了一页之外,一切都很好。此页面具有用于搜索的 UserControl。我注意到这个页面有些奇怪。如果我执行搜索,所有法语字符都会显示不正确。但是,如果我将语言更改为英语,然后再改回法语,它们就会出现。文本来自全局 resx 文件。 首次展示:

Nous avons également effectué

更改语言后再返回:

Nous avons également effectué

任何想法为什么会发生这种情况?它也会影响整个页面,甚至是在所有其他页面上都能正常工作的部分。 web.config 文件的默认编码设置为 utf-8:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" />

【问题讨论】:

    标签: asp.net user-controls localization


    【解决方案1】:

    如果您看到两个不相关的字符代替带有变音符号的单个字符,则您没有告诉客户端将页面视为 UTF-8 需要知道什么,例如

    Response.CodePage = 65001 ;
    Response.CharSet = "utf-8" ;
    

    摘自related topic

    【讨论】:

    • 您引用的帖子也与我在上面作为替代解决方案显示的 web.config 文件中的同一行。
    • 但是代码页呢?例如,UTF-8 字符编码的代码页编号在 IBM 为 1208,在 Microsoft 为 65001,在 SAP 为 4110
    • 如果在 web.config 文件中设置了请求和响应编码,则不需要设置代码页。为了完整起见,我在页面定义中添加了 codepage 属性,但它仍然不起作用。
    【解决方案2】:

    我在显然不相关的应用程序中发现了几个关于 UTF-8 法语字符问题的参考:

    也许试试 UTF-16?

    【讨论】:

    • 这并不能解释为什么它在刷新页面后会起作用。
    • 是的,我不知道。但看起来实际的字符集有问题......关于刷新的一些事情会清除缓冲区,或者将计数器增加超过一个神奇的值,谁知道呢?我什至不会试图弄清楚,只是尝试另一个字符集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多