[How to] วิธีตั้งค่า Encoding ให้ไฟล์ต่าง ๆ บน Android Studio

สำหรับไฟล์ต่าง ๆ บน Android Studio Project ที่เป็น Text นั้น จะมีการแสดงผลบน Android Studio ด้วย Encoding ที่กำหนดไว้ ซึ่งมักจะพบปัญหาบ่อย ๆ กับข้อความที่เป็นภาษาไทย (สำหรับภาษาท้องถิื่นอื่น ๆ ก็เจอปัญหาเดียวกัน) ไม่ว่าจะเกิดจากข้อความภาษาไทยที่ฝังอยู่ในโปรแกรม หรือข้อความภาษาไทยที่ส่งเข้ามาจากภายนอก App ก็มาจากการกำหนด Encoding ไม่ถูกต้องทั้งนั้น

Android-Studio-logo_File-Encodings

ซึ่งบน Android Studio นั้น เราสามารถกำหนดได้ว่า ไฟล์ที่เปิดอยู่นั้น จะให้แสดงผลด้วย Encoding ใด หรือจะกำหนดให้กับทั้ง Project เลย หรือจะกำหนดให้เป็น Default กับทุก Project เลย ก็สามารถทำได้

สำหรับใครที่ยังไม่รู้จัก Encoding แนะนำให้ไปหาบทความอ่านก่อนนะ ในบทความนี้ขอติ๊ต่างว่าทุกท่าน รู้จัก Encoding กันอยู่แล้วละกันนะ

ก่อนอื่น มาดูไฟล์ต่าง ๆ ใน Project กันก่อน ในมุมมอง Android ผมขอแบ่งไฟล์ต่าง ๆ เป็น 4 กลุ่ม ดังนี้

Android Studio Project Structure
Android Studio Project Structure
  1. Manifest – ไฟล์สกุล xml
  2. Java – ไฟล์สกุล java
  3. Resource – ไฟล์สกุล xml
  4. Gradle – แบ่งย่อยได้อีก 3 กลุ่ม คือ
    1. Script – ไฟล์สกุล gradle
    2. Property – ไฟล์สกุล properties
    3. Proguard rule – ไฟล์สกุล pro

ทีนี้ ลองเปิดไฟล์แต่ละกลุ่มดู แล้วสังเกตุที่มุมขวาล่าง ของ Android Studio ซึ่งจะแสดง Encoding ของไฟล์ไว้ ดังนี้

สำหรับไฟล์สกุล xml จากทั้ง Manifest และ Resource นั้น จะมี Encoding เป็น UTF-8 และไม่สามารถเปลี่ยนได้

Android Studio แสดง Encoding ของ XML File
Android Studio แสดง Encoding ของ XML File

สำหรับไฟล์สกุล java, gradle และ pro นั้น จะมี Encoding เป็น UTF-8 เช่นกัน และสามารถเปลี่ยนได้

Android Studio แสดง Encoding ของ Java และ Gradle File
Android Studio แสดง Encoding ของ Java และ Gradle File

ส่วนไฟล์สกุล properties นั้น จะมี Encoding เป็น x-windows-874 และไม่สามารถเปลี่ยนได้

Android Studio แสดง Encoding ของ Proguard File
Android Studio แสดง Encoding ของ Proguard File

สำหรับใครที่ใช้ Mac OS หรือ Linux ไฟล์สกุล properties น่าจะมี Encoding เป็นค่าอื่น ที่ไม่ใช่ x-windows-874 ใครใช้ Mac OS และ Linux อยู่ รบกวน Comment บอกหน่อยครับ

จะเห็นว่า เราสามารถเปลี่ยน Encoding สำหรับไฟล์สกุล java, gradle และ pro ได้เท่านั้น

จากที่เห็นด้านบน เป็นการสร้าง Project ใหม่ บน Android Studio ที่รันอยู่บน Microsoft Windows และยังไม่มีการ Config ใด ๆ ให้กับ Android Studio เลย ก็เลยไม่พบปัญหาเรื่อง Encoding แต่อย่างใด

แต่… ถ้าเพิ่มไฟล์ใหม่ดู จะพบว่า Encoding ของไฟล์สกุล java ที่สร้างขึ้นมาทีหลัง ดันมี Encoding เป็น x-windows-874 ซะอย่างงั้น

หรือว่า ถ้าเปิด Project ที่มีอยู่แล้ว ไม่ว่าจะเป็นการ Download มา หรือ Convert มาจาก Eclipse ADT ก็ตาม ก็มีโอกาสที่ Encoding แตกต่างกันไปอีก

เพราะฉะนั้น เราควรจะแก้ไข Encoding ให้กับทุกประเภทไฟล์ ซึ่งผมแนะนำให้กำหนดเป็น UTF-8 ทั้งหมด เพื่อจะได้รองรับตัวอักษรภาษาใด ๆ ก็ได้นั่นเอง

 

สำหรับการแก้ไข ก็เข้าไปที่ Settings ของ Android Studio แล้วไปที่เมนู Editor > File Encodings (1) แล้วทำการกำหนด Encoding โดยในส่วนของ IDE Encoding นั้น โดยปกติจะเป็น UTF-8 อยู่แล้ว (เครื่องใครไม่ได้กำหนดตามนี้ ก็เปลี่ยนซะนะ) ก็จะเหลือส่วนของ Encoding ที่ต้องกำหนด คือ Project Encoding (2) และ Properties Files (3)

เมนู File Encodings ใน Settings ของ Android Studio
เมนู File Encodings ใน Settings ของ Android Studio

เมื่อตอบ OK ไปแล้ว ลองเปิดเข้าไปดูอีกครั้ง จะพบว่ารายการไฟล์ที่เห็น ในส่วนของ Default Encoding ของไฟล์สกุล properties นั้น ได้เปลี่ยนไปแล้ว หรือจะลองเปิดไฟล์สกุล properties ดู แล้วตรวจสอบที่มุมขวาล่างก็ได้เช่นกัน

ส่วนไฟล์สกุล java จะไม่ถูกเปลี่ยนตาม ก็ไม่ต้องไปซีเรียส เพราะที่มุมขวาล่าง เราสามารถเปลี่ยนได้อยู่แล้ว ก็เปลี่ยนซะให้เรียบร้อย

แต่ถ้ามีการสร้างไฟล์สกุล java และไฟล์อื่น ๆ ขึ้นมาหลังจากนี้ มันก็จะมี Encoding เป็น UTF-8 แล้วล่ะ

ต้องมานั่งเปลี่ยนทุก Project เลยเหรอ

ถ้าเป็น Project ที่สร้างมาก่อนหน้านี้ ก็… ใช่ครับ

แต่ถ้าเป็น Project ที่สร้างหลังจากนี้ เราสามารถกำหนด Default Settings ได้ จากเมนู File > Other Settings > Default Settings… ซึ่งก็จะอยู่ในเมนู Editor > File Encodings เหมือนรูปด้านบนน่ะแหล่ะ (ขี้เกียจ Capture ใหม่ละ)

หรือถ้ายังไม่ได้เปิด Project ใด ๆ บน Android Studio สามารถกำหนดได้จากหน้า Welcome ที่เมนู Configure > Settings หรือ Configure > Project Defaults > Settings ก็ได้เหมือนกัน

เมนู Configure ในหน้า Welcome ของ Android Studio
เมนู Configure ในหน้า Welcome ของ Android Studio

ก็ตั้ง Default เป็น UTF-8 ไว้ซะ ต่อจากนี้ก็ไม่ต้องห่วงเรื่อง Encoding อีกแล้วล่ะ

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.