Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

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

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

tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2845
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tatiya »

ตอนนี้ผมกำลังทำงานที่ต้องนำภาษาไทย มาใช้ โดยเก็บหลายๆตัวแปรไว้ใน ตัวแปร โดยที่แต่ละตัวแปรจะมีทั้งภาษาไทยและภาษาอังกฤษครับ ผมได้ลองทำแล้ว แต่มันจะเป็นแบบนี้ครับ (ผมใช้ Python2.7 นะครับ)
ตอนแรกผมรวมตัวแปรกันได้แบบนี้ นะครับ

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

test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
test = test1,test2,test5
print test
ผลลัพท์
('mindphp', 'mac', u'\u0e42\u0e2b\u0e25\u0e46\u0e46\u0e46\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e46\u0e46\u0e2e\u0e48\u0e27\u0e22')



วิธีที่ 1

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

test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
test3 = test5.encode('utf-8')
test = test1,test2,test3
print test
ผลลัพท์คือ Error
Traceback (most recent call last):
File "/home/com008/PycharmProjects/Work_for_use/test.py", line 14, in <module>
test3 = test5.encode('utf-8') #.encode('utf-8') #(encoding="utf-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)


วิธีที่ 2

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

test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
test3 = test5   
test = test1,test2,test3.encode('utf-8')
print test
ผลลัพท์คือ Error
Traceback (most recent call last):
File "/home/com008/PycharmProjects/Work_for_use/test.py", line 18, in <module>
test = test1,test2,test3.encode('utf-8') #,mac #.encode(encoding='utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)


วิธีที่ 3

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

test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
test3 = test5
print type(test3)
mac = ''.join(str(i)for i in test3 )
print mac
tester = mac.decode("utf-8")
test = test1,test2,tester
print test
ผลลัพท์
<type 'str'>
โหลๆๆๆทดสอบๆๆฮ่วย
('mindphp', 'mac', u'\u0e42\u0e2b\u0e25\u0e46\u0e46\u0e46\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e46\u0e46\u0e2e\u0e48\u0e27\u0e22')
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41251
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

หัวไฟล์ ใส่

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

# -*- coding: utf-8 -*- 
หรือยังครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2845
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tatiya »

mindphp เขียน:หัวไฟล์ ใส่

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

# -*- coding: utf-8 -*- 
หรือยังครับ
ใส่แล้วครับ ไส่ไปแต่แรกแล้วครับ ผมลืมนำมาใส่บนคำถามครับ :oops:
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2845
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tatiya »

แก้ไขจากข้างบน นะครับ

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

# -*- coding: utf-8 -*-
test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
test = test1,test2,test5
print test
ผลลัพท์

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

โหลๆๆๆทดสอบๆๆฮ่วย
('mindphp', 'mac', '\xe0\xb9\x82\xe0\xb8\xab\xe0\xb8\xa5\xe0\xb9\x86\xe0\xb9\x86\xe0\xb9\x86\xe0\xb8\x97\xe0\xb8\x94\xe0\xb8\xaa\xe0\xb8\xad\xe0\xb8\x9a\xe0\xb9\x86\xe0\xb9\x86\xe0\xb8\xae\xe0\xb9\x88\xe0\xb8\xa7\xe0\xb8\xa2')
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2845
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tatiya »

อันนี้รันผ่าน terminal ครับ
tester.png
tester.png (30.69 KiB) Viewed 3080 times
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2845
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tatiya »

แต่รันบน python 3.4 ได้นะครับ

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

com008@com008-K45A:~$ python3.4 //home/com008/PycharmProjects/Work_for_use/test.py
โหลๆๆๆทดสอบๆๆฮ่วย
('mindphp', 'mac', 'โหลๆๆๆทดสอบๆๆฮ่วย')
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41251
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ถ้า Linux
ลองเพิ่ม

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
tatiya
PHP VIP Members
PHP VIP Members
โพสต์: 2845
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

Re: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tatiya »

mindphp เขียน:ถ้า Linux
ลองเพิ่ม

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
ลองแล้วครับ ที่จริงผมลองทำแบบ เอาตัวแปรมาบวกกัน มันก็นได้นะครับ

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
test = str("ชื่อ : "+test1+"\n"+"นามสกุล : "+test2+"\n"+"รหัสผ่าน : "+test3)
print (test)
ผลลัพท์ก็คือ อันนี้ใช้ได้ครับ
ชื่อ : mindphp
นามสกุล : mac
รหัสผ่าน : โหลๆๆๆทดสอบๆๆฮ่วย

แต่ถ้าทำแบบ

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
test1 = "mindphp"
test2 = "mac"
test5 = "โหลๆๆๆทดสอบๆๆฮ่วย"
tester = test1,test2,test3
print (tester)
ผลลัพท์

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

('mindphp', 'mac', '\xe0\xb9\x82\xe0\xb8\xab\xe0\xb8\xa5\xe0\xb9\x86\xe0\xb9\x86\xe0\xb9\x86\xe0\xb8\x97\xe0\xb8\x94\xe0\xb8\xaa\xe0\xb8\xad\xe0\xb8\x9a\xe0\xb9\x86\xe0\xb9\x86\xe0\xb8\xae\xe0\xb9\x88\xe0\xb8\xa7\xe0\xb8\xa2')
ส่วนงานจริงๆที่ผมทำ ผมลองทำตามโค้ดแรก แต่มันขึ้นเออเร่อ

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

Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/case.py", line 331, in run
    testMethod()
  File "/home/com008/NetBeansProjects/openerp-fmax/Selenium/wd_selenium_alloy/alloy_all.py", line 220, in test_view_reporting
    self.reportbug(driver.current_url, "B - view reporting", "Search Financial Report not found!", db_name, Eror_text=error_text,img_error=img_error)
  File "/home/com008/NetBeansProjects/openerp-fmax/Selenium/wd_selenium_alloy/alloy_all.py", line 46, in reportbug
    answer = "Link DB_Error : "+erpurl+"\n"+"User : "+username+"\n"+"Password : "+pwd+"\n"+"Subject : "+subject_report+"\n"+"ปัญหา issue : "+message+"\n"+"DB Name : "+db_name+"\n"+"[code]"+Eror_text+"
"+"\n"+"[img]"+img_error+"[/img]"
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)[/code]


ผมเลยสันนิฐานว่าน่าจะเป็นเพราะ ตัวโปรแกรมผมส่งค่า ตัวแปรที่เป็น string ไปทำงานในอีกฟังก์ชั่นนึ่ง ซึ่งฟังก์นั่นน่าจะไม่มี # -*- coding: utf-8 -*-
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 98