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

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: Q - สอบถามวิธีแปลง ascii บน python หน่อยครับ

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

โดย tatiya » 06/09/2018 4:06 pm

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

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

โดย mindphp » 06/09/2018 12:43 pm

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

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

โดย tatiya » 06/09/2018 11:30 am

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

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

com008@com008-K45A:~$ python3.4 //home/com008/PycharmProjects/Work_for_use/test.py
โหลๆๆๆทดสอบๆๆฮ่วย
('mindphp', 'mac', 'โหลๆๆๆทดสอบๆๆฮ่วย')

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

โดย tatiya » 06/09/2018 11:25 am

อันนี้รันผ่าน terminal ครับ
tester.png
tester.png (30.69 KiB) Viewed 3080 times

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

โดย tatiya » 06/09/2018 11:23 am

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

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

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

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

โดย tatiya » 06/09/2018 11:06 am

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

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

# -*- coding: utf-8 -*- 
หรือยังครับ
ใส่แล้วครับ ไส่ไปแต่แรกแล้วครับ ผมลืมนำมาใส่บนคำถามครับ :oops:

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

โดย mindphp » 06/09/2018 11:04 am

หัวไฟล์ ใส่

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

# -*- coding: utf-8 -*- 
หรือยังครับ

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

โดย tatiya » 06/09/2018 10:46 am

ตอนนี้ผมกำลังทำงานที่ต้องนำภาษาไทย มาใช้ โดยเก็บหลายๆตัวแปรไว้ใน ตัวแปร โดยที่แต่ละตัวแปรจะมีทั้งภาษาไทยและภาษาอังกฤษครับ ผมได้ลองทำแล้ว แต่มันจะเป็นแบบนี้ครับ (ผมใช้ 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')

ข้างบน