【问题标题】:CQ5/AEM Dispatcher not retaining charset informationCQ5/AEM Dispatcher 不保留字符集信息
【发布时间】:2015-01-29 17:15:58
【问题描述】:

当我们从发布实例中提取内容时,我们会得到一个内容类型标头,该标头指出内容是“charset=utf-8”。当从调度程序提供此文件时,缺少字符集信息。对于查看 html 中声明的编码的网页来说,这不是问题,但是有许多第三方库,包括来自 Adob​​e 的一个库,如果该内容类型声明不是,则将其处理为 iso-8859-1在那里。

我正在尝试确定调度程序是否可以配置为添加此信息。

【问题讨论】:

    标签: character-encoding aem dispatcher


    【解决方案1】:

    实际上,调度程序只缓存内容,没有标题。如果页面是从缓存中加载的,它的行为将与 Apache 提供的任何其他静态文件非常相似。调度程序本身没有任何字符集配置,但我认为添加

    AddDefaultCharset utf-8
    

    到 Apache 配置应该可以解决这个问题。更多信息可以在Apache docs找到。

    【讨论】:

      【解决方案2】:

      这可能对某人有所帮助,但如果您是从 Java servlet 创建的,请确保首先设置标头。在作者/发布中,如果由于其他配置和页面访问方式而未设置这些,似乎可以处理。

      所以下面(你有你的 DOGET 方法),你需要指定你的标题作为第一件事,否则编码将无法正确设置。

      protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws IOException, ServletException { 
            response.setContentType(com.adobe.granite.rest.Constants.CT_JSON); 
            response.setCharacterEncoding(com.adobe.granite.rest.Constants.DEFAULT_CHARSET); 
      ....
      }
      

      在我的例子中,AEM 和 Web 服务器有正确的信息,但问题是编码和内容类型的设置发生在稍后应该立即定义的时候。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多