首页 > 解决方案 > 文本显示为问号(html 错误页面)(nginx + elastic beanstalk)

问题描述

更新:

本地具有 html 页面代码的配置文件具有utf-8编码。但是弹性beantalk实例上的文件单独具有us-ascii编码,如40x.html和50x.html

我有 40x 和 50x 错误的自定义错误页面,定义如下:

files:
  "/usr/share/nginx/html/40x.html" :
    mode: "000755"
    owner: nginx
    group: nginx
    content: |
        <!DOCTYPE html>
        <html>
               <head>
                        <title>الموقع في حالة صيانة</title>
                        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                        <meta name="viewport" content="width=device-width, initial-scale=1" />

                        <style type="text/css">
                            body { text-align: center; padding: 10%; font: 20px Helvetica, sans-serif; color: #333; }
                            h1 { font-size: 50px; margin: 0; }
                            article { display: block; text-align: right; max-width: 650px; margin: 0 auto; }
                            a { color: #dc8100; text-decoration: none; }
                            a:hover { color: #333; text-decoration: none; }
                            @media only screen and (max-width : 480px) {
                                    h1 { font-size: 40px; }
                            }
                        </style>
                </head>
                <body>
                     <article dir="rtl">
                        <h1>لم نتمكن من العثور على تلك الصفحة.</h1>
                        <p>الصفحة التي تبحث عنها بعيدة عن متناولنا</p>
                      </article>
                </body>
        </html>

在customnginx中:

        error_page 400 404 /40x.html;
        location = /40x.html {
            limit_req zone=nginx_main burst=20 nodelay;
            limit_req_status 444;
            charset utf-8;
            source_charset utf-8;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            limit_req zone=nginx_main burst=20 nodelay;
            limit_req_status 444;
            charset utf-8;
            source_charset utf-8;
        }

如您所见,我同时设置charset utf-8;source_charset utf-8;

html 页面也有 UTF-8 字符集。

问题是目前,上面的阿拉伯字符显示为问号。

标签: nginxamazon-elastic-beanstalk

解决方案


您的文件中有 UTF-8 元标记 这是必要的,但还不够!您还需要:

1- 以 UTF-8 编码的文件

大多数文本编辑器(例如 Notepad++)允许您更改文件字符集,请确保您的文件以 UTF-8 编码。

2- HTTP 标头

/etc/nginx/nginx.conf你需要这个:

http {
    charset utf-8;
}

正确传递内容。


推荐阅读