iconv คำสั่งใน Linux

Iconv Kha Sang Ni Linux



ตรวจสอบให้แน่ใจว่าได้อัปเดตเครื่อง Linux ของคุณก่อนที่จะดำเนินการตามบทความนี้อย่างลึกซึ้ง สำหรับการอัพเดท ให้ใช้ยูทิลิตี้ “apt” ของ Linux ด้วยคำสำคัญ “update” และรันคำสั่งนี้โดยใช้สิทธิ์ “sudo” แม้ว่าเราจะสามารถข้ามไปสู่การใช้งานได้ในตอนนี้ แต่เราก็อยากจะอัพเกรดระบบนี้เช่นกัน กล่าวคือ การอัปเกรดจะลดโอกาสของการเกิดข้อผิดพลาด และระบบจะสามารถแก้ไขปัญหาได้แม่นยำยิ่งขึ้น ดังนั้น ใช้ยูทิลิตี้ 'apt' ภายในคำแนะนำ 'อัปเกรด'

มาดูยูทิลิตี้ iconv ของ Linux ในคอนโซลเทอร์มินัลกันเถอะ ดังนั้นเราจึงดำเนินการคำสั่ง 'iconv' ด้วยแฟล็ก '-l' เพื่อแสดงชุดอักขระที่เข้ารหัสที่รู้จักและใช้มากที่สุดทั้งหมดบนหน้าจอเทอร์มินัลของเรา มันจะแสดงชุดอักขระที่เข้ารหัสพร้อมกับนามแฝง คุณสามารถดูรายการชุดอักขระที่มีรหัสยาวได้หลังจากเลื่อนลงมาเล็กน้อย







ถึงเวลาเริ่มต้นใช้งานคำสั่ง iconv ใน Linux อันดับแรก เราต้องการไฟล์ประเภทต่างๆ ในระบบของเราเพื่อแปลงไฟล์ประเภทหนึ่งเป็นอีกประเภทหนึ่ง ดังนั้นเราจึงใช้แบบสอบถาม 'สัมผัส' ที่คอนโซลเทอร์มินัลเพื่อสร้างไฟล์ที่แตกต่างกันสามไฟล์ ได้แก่ ประเภท Java ประเภท C และประเภทข้อความ รายการเนื้อหาไดเรกทอรีปัจจุบัน คุณจะพบไฟล์ที่สร้างขึ้นใหม่ในนั้น



หลังจากนี้ เราจะดูประเภทไฟล์แต่ละไฟล์แยกกันโดยใช้แบบสอบถาม 'ไฟล์' พร้อมกับชื่อของแต่ละไฟล์ แบบสอบถามนี้ต้องใช้ตัวเลือก '-I' เพื่อแสดงประเภทของอักขระการเข้ารหัสที่กำหนดสำหรับแต่ละไฟล์แยกกัน หากคุณลืมใช้ตัวเลือก '-I' ให้ใช้แฟล็ก '—mime' แทน ทั้งแฟล็ก '-I' และ '—mime' ทำงานเหมือนกัน



หลังจากดำเนินการตามคำสั่ง 'ไฟล์' สำหรับไฟล์ประเภท 'txt' เราก็ได้รับการเข้ารหัสประเภทอักขระ 'US-ASCII' ขณะใช้คำสั่งเดียวกันสำหรับไฟล์ Java และ C แสดงว่าทั้งสองไฟล์มีการเข้ารหัสประเภทอักขระ 'BINARY' นอกจากนั้น คำแนะนำนี้แสดงว่าไฟล์ทั้งสามนี้ว่างเปล่า





ตอนนี้ เราจะสาธิตการใช้คำสั่ง iconv ที่คอนโซลเพื่อแปลงไฟล์การเข้ารหัสชุดอักขระเฉพาะไปเป็นการเข้ารหัสชุดอักขระอื่น ก่อนหน้านั้น เราต้องเพิ่มโค้ดหรือข้อมูลบางส่วนลงในไฟล์ของเรา ดังนั้นเราจึงได้เพิ่มโค้ด Java ในไฟล์ 'text.java', โค้ด C ภายในไฟล์ 'text.c' และเพิ่มข้อมูลข้อความภายในไฟล์ 'test.txt' แบบสอบถาม cat ถูกใช้ที่นี่เพื่อแสดงเนื้อหาของทั้งสามไฟล์ดังที่แสดงด้านล่าง:



ตอนนี้เราได้เพิ่มข้อมูลเรียบร้อยแล้ว เราจะเห็นการเข้ารหัสชุดอักขระของไฟล์เหล่านี้อีกครั้ง ดังนั้นเราจึงได้ลองใช้คำสั่งไฟล์เดียวกันภายในเชลล์ด้วยแฟล็ก '-I' และชื่อไฟล์ เช่น test.txt, test.java และ test.c การรันคำสั่งทั้งสามนี้แยกกันสำหรับไฟล์ทั้งสามนั้นแสดงว่าการเข้ารหัสชุดอักขระได้รับการอัปเดตสำหรับไฟล์ Java และ C ในขณะที่ไฟล์ข้อความยังคงเหมือนเดิม เช่น US-ASCII การเข้ารหัสไฟล์ Java และ C ก่อนหน้านี้เป็น 'ไบนารี' ตอนนี้เป็น “US-ASCII” นอกจากนี้ยังแสดงให้เห็นว่าไฟล์ข้อความมีข้อมูลข้อความธรรมดาในขณะที่ไฟล์โค้ดอีกสองไฟล์มีสคริปต์เป็นเนื้อหา

ถึงเวลาทำงานจริงที่จำเป็นสำหรับบทความนี้ เช่น แปลงการเข้ารหัสหนึ่งเป็นอีกอันโดยใช้คำสั่ง iconv ในเชลล์ ดังนั้นเราจึงใช้คำสั่ง 'iconv' ภายในเชลล์เทอร์มินัลด้วยสิทธิ์ 'sudo' คำสั่งนี้ใช้ตัวเลือก '-f' ย่อมาจาก 'from' และตัวเลือก '-t' ย่อมาจาก 'to' นั่นคือจากการเข้ารหัสหนึ่งไปอีกอันหนึ่ง

หลังจากตัวเลือก '-f' คุณต้องระบุการเข้ารหัสที่ไฟล์ของคุณมีอยู่แล้ว เช่น US-ASCII ในขณะที่อยู่หลังตัวเลือก '-t' คุณต้องระบุการเข้ารหัสที่คุณต้องการแทนที่ด้วยการเข้ารหัสแบบเก่า เช่น UNICODE คุณต้องระบุชื่อไฟล์ที่ใช้เป็นแหล่งที่มาด้วยตัวเลือก –o เพื่อสร้างอิมเมจออบเจ็กต์ รูปภาพวัตถุจะเป็นไฟล์อื่น เช่น 'new.c' ซึ่งเป็นประเภทเดียวกัน แต่มีการเข้ารหัสใหม่และข้อมูลเดียวกัน

หลังจากดำเนินการตามคำสั่งต่อไปนี้ คุณจะได้รับไฟล์ใหม่ในไดเร็กทอรีเดียวกัน นั่นคือ ตามคำสั่ง 'ls' ตอนนี้ เราจะตรวจสอบการเข้ารหัสชุดอักขระของไฟล์ใหม่ที่สร้างขึ้นโดยใช้คำสั่ง iconv เราจะใช้คำสั่ง 'ไฟล์' อีกครั้งด้วยตัวเลือก '-I' และชื่อไฟล์ใหม่ เช่น new.c.

คุณจะเห็นว่าชุดอักขระสำหรับไฟล์ใหม่นี้แตกต่างจากชุดอักขระของไฟล์เก่า นั่นคือ ชุดอักขระ UTF-16LE เนื่องจากเราได้แปลการเข้ารหัส US-ASCII เป็นการเข้ารหัส UNICODE โดยใช้คำสั่ง iconv สำหรับไฟล์ new.c ของเรา แบบสอบถาม 'cat' แสดงรหัส C เดียวกันภายในไฟล์ แต่เริ่มต้นด้วยอักขระ Unicode บางตัวดังที่แสดงแล้ว

ในทำนองเดียวกัน เราจะเปลี่ยนการเข้ารหัสไฟล์ข้อความ test.txt คำแนะนำไฟล์แสดงให้เห็นว่ามีการเข้ารหัสชุดอักขระ US-ASCII มีการใช้คำสั่ง iconv กับรูปแบบเดียวกันในการแปลงการเข้ารหัสไฟล์ test.txt จาก US-ASCII เป็น TURKISH8 คุณจะเห็นว่าไม่เปลี่ยน US-ASCII เป็นภาษาตุรกี

หลังจากนี้ เราใช้คำสั่งเดียวกันเพื่อให้ครอบคลุมการเข้ารหัสชุดอักขระ US-ASCII ถึง UTF-32 สำหรับไฟล์เดียวกัน ครั้งนี้มันได้ผล เนื่องจากบางครั้งอาจมีปัญหาในการแปลงชุดการเข้ารหัสชุดหนึ่งเป็นชุดอื่น หรือการเข้ารหัสอื่นๆ อาจไม่รองรับ

บทสรุป

บทความนี้กล่าวถึงวิธีใช้คำสั่ง iconv Linux เพื่อแปลงชุดอักขระเข้ารหัสหนึ่งชุดเป็นอีกชุดหนึ่งโดยใช้นามแฝง ในลักษณะนี้ เราต้องสร้างไฟล์บางประเภทที่แตกต่างกัน