当我们从发布实例中提取内容时,我们会得到一个内容类型标题,指出内容为" charset = utf-8"。当这个文件从调度程序提供时,缺少charset信息。这对于查看html中声明的编码的网页来说不是问题,但是有许多第三方库,包括来自Adobe的第三方库,如果内容类型声明不是,则将其处理为iso-8859-1。 #39;那里。
我试图确定是否可以将调度程序配置为添加此信息。
答案 0 :(得分:4)
实际上,调度程序仅缓存内容,没有标题。如果页面是从缓存加载的,那么它的行为与Apache提供的任何其他静态文件非常相似。调度程序本身没有任何charset配置,但我认为添加
AddDefaultCharset utf-8
到Apache配置应解决问题。更多信息可以在Apache docs。
中找到答案 1 :(得分:0)
这可能对某人有帮助,但是如果您是从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服务器具有正确的信息,但问题是编码和内容类型的设置发生在稍后应立即定义的时候。