สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
chatee supasand
PHP VIP Members
PHP VIP Members
Posts: 1663
Joined: 04/06/2019 10:06 am

สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii

Post by chatee supasand »

python 2.7 windows8.1
อยากทราบวิธีการแก้ปัญหาอะครับ
ผมจะทำการเรียกฐานข้อมูลมาแสดงแต่ติด
UnicodeDecodeError
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
โค้ด เรียกตาราง

Code: Select all

# -*- coding=utf-8 -*-
from __future__ import unicode_literals
from flask import Flask, current_app, g
from flask import render_template
import psycopg2 as p
import click
click.disable_unicode_literals_warning = True
app = Flask(__name__)
app.config.from_pyfile('app.cfg')
con = p.connect(database='miniproject', user='openpg', password='openpgpwd')
cur = con.cursor()
@app.route('/show2') #กำหนด หน้า path
def show(): #def  เป็นคำสำคัญสำหรับการสร้างฟังก์ชัน
        sql = "SELECT * FROM genpdf ORDER BY fileid"
        sql = sql.encode('utf-8')
        cur.execute(sql)
        rows = cur.fetchall()  # ทำการเลือกข้อมูลทั้งหมด
        return render_template('show2.html', rows=rows)
app.run(debug=True)
็HTML

Code: Select all

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>แสดงข้อมูล</title>
</head>
<script>
function confirm_delete() {
 return confirm("คุณต้องการที่จะลบข้อมูลใช่หรอไม่");
}
</script>
<body>
<!-- สร้างตารางเพื่อทำการแสดงข้อมูล-->
<div class = "container">
<div ></div>
<div>
<table class="table table-bordered" border="1" cellspacing="5" width="80%" height="5" align="center">
            <a href = "/">กลับหน้าหลัก</a>
        <br>
         <thead>
         <!-- สร้าง ส่วนหัวขอตาราง -->
            <td align="center">ID</td>
            <td align="center">ชื่อไฟล์</td>
            <td align="center">คำอธิบาย</td>
            <td align="center">เวลา</td>
            <td align="center">IP</td>
            <td colspan="2" align="center" width="10%">เครื่องมือ</td>
         </thead>
    <!-- วนลูปเพื่อดึงข้อมูลมาแสดง -->
             {% for row in rows %}
             <tr>
                <td align="center">{{ row[0] }}</td>
                <td align="center">{{ row[1] }}</td>
                <td align="center">{{ row[2] }}</td>
                <td align="center">{{ row[3] }}</td>
                <td align="center">{{ row[4] }}</td>

            </tr>
            {% endfor %} <!-- ปิดลูป-->

      </table>
</div><div ></div></div></body>
   </body>
</html>
ถ้าไม่มีภาษาไทย จะแสดงได้ปกติ ตามนี้
ask4.png
ข้อมูลตาราง
ask3.png
ask3.png (16.46 KiB) Viewed 483 times
ถ้ามีถาษาไทยจะ Error
UnicodeDecodeError
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
ask2.png
ข้อมูลตารงฐานข้อมูล
ask1.png
ask1.png (16.39 KiB) Viewed 483 times

กระทู้ที่มีปัญหาคล้ายกัน แต่ยังไม่มีข้อสรุป
viewtopic.php?f=16&t=57105
viewtopic.php?f=16&t=50214
Image

tatiya
PHP VIP Members
PHP VIP Members
Posts: 2845
Joined: 09/07/2018 9:35 am

Re: สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii

Post by tatiya »

ลอง print ค่าที่ fetch ที่ออกมาดูหน่อยครับ มันน่าจะเป็นตัวแปร tuple งั้นก็ลอง เอามา loop ออกมาดูก่อนครับ
Image Image Image GOODBYE AND GOODLUCK EVERYONE Love you all bye. Thank you for everything.
26/09/2019

User avatar
chatee supasand
PHP VIP Members
PHP VIP Members
Posts: 1663
Joined: 04/06/2019 10:06 am

Re: สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii

Post by chatee supasand »

tatiya wrote:ลอง print ค่าที่ fetch ที่ออกมาดูหน่อยครับ มันน่าจะเป็นตัวแปร tuple งั้นก็ลอง เอามา loop ออกมาดูก่อนครับ
loop.png
loop.png (6.51 KiB) Viewed 473 times
Image

tatiya
PHP VIP Members
PHP VIP Members
Posts: 2845
Joined: 09/07/2018 9:35 am

Re: สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii

Post by tatiya »

งั้นลองเอา Tuple มาแปลงเป็น list แล้วค่อย return ออกลองดูครับ
Image Image Image GOODBYE AND GOODLUCK EVERYONE Love you all bye. Thank you for everything.
26/09/2019

User avatar
chatee supasand
PHP VIP Members
PHP VIP Members
Posts: 1663
Joined: 04/06/2019 10:06 am

Re: สอบถามครับ-เรียกฐานข้อมูลมาแสดง เป็นภาษาไทยไม่ได้อะครับ ขึ้น error Ascii

Post by chatee supasand »

แก้ได้แล้วนะครับ
ทำการเก็บค่า row[2] ไว้ในตัวแปล des แล้วนำมา decode utf-8 แล้วนำมาลูปแสดงที่ตาราง
โค้ด HTML

Code: Select all

{% set des = row[2] %} {% set des = des.decode('utf-8') %} 
เพิ่มไปที่

Code: Select all

<!-- วนลูปเพื่อดึงข้อมูลมาแสดง -->
             {% for row in rows %}
             <tr>
                {% set des = row[2] %} {% set des = des.decode('utf-8') %} 
                <td align="center">{{ row[0] }}</td>
                <td align="center">{{ row[1] }}</td>
                <td align="center">{{ des }}</td>
                <td align="center">{{ row[3] }}</td>
                <td align="center">{{ row[4] }}</td>

            </tr>
            {% endfor %} <!-- ปิดลูป-->
Image

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - C/C++ & java & Python”

Who is online

Users browsing this forum: No registered users and 5 guests