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

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

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

ภาพประจำตัวสมาชิก
chatee supasand
PHP Super Member
PHP Super Member
โพสต์: 458
ลงทะเบียนเมื่อ: 04/06/2019 10:06 am

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

โพสต์โดย chatee supasand » 15/07/2019 4:17 pm

python 2.7 windows8.1
อยากทราบวิธีการแก้ปัญหาอะครับ
ผมจะทำการเรียกฐานข้อมูลมาแสดงแต่ติด

UnicodeDecodeError
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)


โค้ด เรียกตาราง

โค้ด: เลือกทั้งหมด

# -*- 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

โค้ด: เลือกทั้งหมด

<!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) เปิดดู 181 ครั้ง


ถ้ามีถาษาไทยจะ 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) เปิดดู 181 ครั้ง



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

ภาพประจำตัวสมาชิก
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2550
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

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

โพสต์โดย tatiya » 15/07/2019 8:00 pm

ลอง print ค่าที่ fetch ที่ออกมาดูหน่อยครับ มันน่าจะเป็นตัวแปร tuple งั้นก็ลอง เอามา loop ออกมาดูก่อนครับ
รูปภาพ รูปภาพ รูปภาพ

ภาพประจำตัวสมาชิก
chatee supasand
PHP Super Member
PHP Super Member
โพสต์: 458
ลงทะเบียนเมื่อ: 04/06/2019 10:06 am

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

โพสต์โดย chatee supasand » 15/07/2019 8:12 pm

tatiya เขียน:ลอง print ค่าที่ fetch ที่ออกมาดูหน่อยครับ มันน่าจะเป็นตัวแปร tuple งั้นก็ลอง เอามา loop ออกมาดูก่อนครับ

loop.png
loop.png (6.51 KiB) เปิดดู 171 ครั้ง
รูปภาพ

ภาพประจำตัวสมาชิก
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2550
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

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

โพสต์โดย tatiya » 18/07/2019 10:43 am

งั้นลองเอา Tuple มาแปลงเป็น list แล้วค่อย return ออกลองดูครับ
รูปภาพ รูปภาพ รูปภาพ

ภาพประจำตัวสมาชิก
chatee supasand
PHP Super Member
PHP Super Member
โพสต์: 458
ลงทะเบียนเมื่อ: 04/06/2019 10:06 am

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

โพสต์โดย chatee supasand » 18/07/2019 2:36 pm

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

โค้ด: เลือกทั้งหมด

{% set des = row[2] %} {% set des = des.decode('utf-8') %}


เพิ่มไปที่

โค้ด: เลือกทั้งหมด

<!-- วนลูปเพื่อดึงข้อมูลมาแสดง -->
             {% 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 %} <!-- ปิดลูป-->
รูปภาพ


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 6 และ บุคคลทั่วไป 0 ท่าน