簡體   English   中英

“utf-8”編碼在開發服務器上有效,但在部署時無效

[英]"utf-8" encoding works on development server but not when deployed

我在 pythonanywhere.com 上托管的 Django 應用程序不支持 utf-8 編碼。 'é' 之類的字符返回錯誤。

意見

def result_view(request):
    if request.method == 'POST':
        search = request.POST.get('textfield').encode("utf-8")
        print search

        try:
            try:
                value = wikipedia.page(search)
                title = value.title
                url = value.url
                print title
                data = wikipedia.summary(search, sentences=10)

            except wikipedia.exceptions.DisambiguationError as e:
                data = e
                title = search + " (Disambiguation)"
                u = search.replace(" ", "_")
                url = "https://en.wikipedia.org/wiki/" + u

        except:
            raise Http404()

        return render(request, "search/result.html", {'title': title, 'url': url, 'data': data})

    else:
        return render(request, "search/result.html", {})

textfield輸入使用 utf-8 編碼,在 Django 開發服務器中工作正常,但在我的pythonanywhere服務器中返回 404 頁。

模板

<form name="myform" method="POST" action="{% url 'result' %}">
    <div class="form-group">
        <div class="input-group">
            {% csrf_token %}
            <input type="text" class="form-control" name="textfield" placeholder="Search" required/>
            <div class="input-group-addon">
                <span class="glyphicon glyphicon-search"></span>

            </div>
        </div>
    </div>

    <button type="submit" class="btn btn-danger btn-lg ">Search</button>
</form> 

您必須允許 Pythonanyhere 使用的數據庫(從這里開始它應該是 MySQL,但可以更改)使用編碼 utf-8,為此,只需啟動 MySQL 控制台,然后運行以下命令(將 databasename 替換為您的數據庫名稱,當然):

 ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

然后,對於每個表運行這個:

 ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;

utf-8 是用於在數據庫中存儲非拉丁字符(例如西里爾文)的標准編碼,然后您需要更改其字符集和排序規則設置,首先在您的數據庫上,然后在每個表上。

如果您有很多表,您可以使用存儲過程執行這些命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM