Ở phiên bản python hiện tại, python xử lý file lưu giữ chương trình python với mặc định file đó đã được viết bằng mã ký tự UTF-8, vì vậy nếu file python được viết bằng mã ký tự khác UTF-8, chúng ta cần chỉ định mã ký tự nào đã được sử dụng để tránh xảy ra lỗi giải mã khi chạy chương trình. Bài viết này đặc biệt hữu ích cho các bạn sử dụng máy tính có cài hệ điều hành sử dụng các ngôn ngữ non-English như tiếng Nhật, tiếng Do Thái, tiếng Hàn, tiếng Trung…
Đặt mã ký tự sử dụng trong file lưu giữ chương trình python
Đặt mã ký tự trong trường hợp file python được viết bằng mã ký tự UTF-8
Python xử lý file lưu giữ chương trình python với mặc định file đó đã được viết bằng mã ký tự UTF-8, do đó với các file python được viết và lưu lại bằng mã ký tự UTF-8 thì chúng ta không cần thiết phải đặt mã ký tự trong file python.
Ví dụ chúng ta viết và lưu giữ chương trình python dưới đây bằng mã ký tự UTF-8.
print("Xin chào") |
Khi chúng ta thử chạy chương trình ghi trong file python này, kết quả sau đây hiện ra chứng tỏ là python đã xử lý chương trình thành công:
- Về cách viết, lưu giữ và chạy chương trình trong file python, hãy xem lại bài Cách viết chương trình python, lưu giữ và chạy chương trình python.
Bạn có thể thấy, do chúng ta đã viết chương trình trong file bằng mã ký tự UTF-8, nên python với mặc định file cần xử lý đã được viết bằng mã ký tự UTF-8 đã không gặp vấn đề gì khi giải mã ký tự. Và chương trình đã được xử lý thành công.
Đặt mã ký tự trong trường hợp file python được viết bằng mã ký tự khác UTF-8
Nếu các ký tự trong file lưu giữ chương trình python được viết dưới dạng một mã ký tự khác UTF-8, điều hay xảy ra với các máy tình cài hệ điều hành sử dụng các ngôn ngữ non-English như tiếng Nhật, tiếng Do Thái, tiếng Hàn, tiếng Trung, thì để python có thể giải mã được các mã ký tự này khi chạy chương trình, chúng ta cần thiết phải đặt mã ký tự trong file python.
Cú pháp đặt mã ký tự sử dụng trong file lưu giữ chương trình python như sau:
#
coding
: tên mã ký tự
Hoặc là#
coding
= tên mã ký tự
Ví dụ:
# coding: shift_jis
Lại nữa, trong môi trường Linux, nếu tại dòng đầu tiên của các file lưu giữ chương trình python có ghi #!/usr/bin/env python3 thì bạn hãy dùng cách đặt mã ký tự thứ hai ở trên.
Hãy cùng xem một ví dụ mà file python sử dụng tiếng Nhật được viết bằng mã ký tự Shift_JIS sau đây:
print ("こんにちは") |
※ こんにちは có nghĩa là xin chào trong tiếng Nhật.
Khi thử chạy file python này, do chúng ta không đặt mã ký tự Shift_JIS đã sử dụng trong để viết file nên python không giải mã được, và lỗi xảy ra:
SyntaxError: Non-UTF-8 code starting with '\x82' in file sample5-2.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details |
Để giải quyết lỗi này, chúng ta tiến hành đặt mã ký tự sử dụng trong file lưu giữ chương trình python này là Shift_JIS bằng cách thêm vào dòng đầu tiên trong file python này dòng code dưới đây:
# coding: shift_jis
File python ở trên sẽ có nội dung như dưới đây.
# coding: shift_jis |
Sau khi lưu lại file ở trên, chúng ta thử chạy chương trình. Kết quả, chương trình chạy mượt mà như sau:
Giống như ở trên, khi viết và lưu một chương trình python vào trong một file, nếu như không có lý do đặc biệt thì chúng ta sẽ sử dụng mã ký tự UTF-8.
Còn nếu như vì lý do đặc biệt bạn muốn dùng mã ký tự khác UTF-8 để viết và lưu file python thì bạn cần thiết phải đặt mã ký tự sử dụng trong file đó.
Các loại mã ký tự phổ biến sử dụng khi đặt mã ký tự sử dụng trong file python
Các loại mã ký tự phổ biến sử dụng khi đặt mã ký tự sử dụng trong file python như sau:
Codec(Tên mã ký tự) | Cách gọi khác |
---|---|
ascii | 646, us-ascii |
cp932 | 932, ms932, mskanji, ms-kanji |
euc_jp | eucjp, ujis, u-jis |
iso2022_jp | csiso2022jp, iso2022jp, iso-2022-jp |
shift_jis | csshiftjis, shiftjis, sjis, s_jis |
utf_8 | U8, UTF, utf8 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách đặt mã ký tự sử dụng trong file lưu giữ chương trình python rồi. Kiyoshi nghĩ là bạn cũng đã nắm được kiến thức căn bản rồi đó.
Hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo nhé.
URL Link
HOME › python cơ bản - lập trình python cho người mới bắt đầu>>03. kiến thức căn bản về chuơng trình python