ວິທີການແປງເອກະສານເຂົ້າລະຫັດເຂົ້າລະຫັດ UTF-8 ໃນ Linux


ໃນ ຄຳ ແນະ ນຳ ນີ້, ພວກເຮົາຈະອະທິບາຍເຖິງການເຂົ້າລະຫັດຕົວອັກສອນໃດແລະກວມເອົາບາງຕົວຢ່າງຂອງການແປງໄຟລ໌ຈາກການເຂົ້າລະຫັດຕົວອັກສອນ ໜຶ່ງ ໄປຫາອີກຕົວ ໜຶ່ງ ໂດຍໃຊ້ເຄື່ອງມືບັນທັດ ຄຳ ສັ່ງ. ຫຼັງຈາກນັ້ນ, ສຸດທ້າຍ, ພວກເຮົາຈະເບິ່ງວິທີການປ່ຽນໄຟລ໌ຫຼາຍໆຊຸດຈາກຊຸດຕົວອັກສອນໃດໆ (ຊຸດໄຟຟ້າ) ໄປຫາການເຂົ້າລະຫັດແບບ UTF-8 ໃນ Linux.

ຄືກັບທີ່ທ່ານອາດຈະມີຢູ່ໃນໃຈແລ້ວ, ຄອມພີວເຕີ້ບໍ່ເຂົ້າໃຈຫລືເກັບຮັກສາຕົວອັກສອນ, ຕົວເລກຫລືສິ່ງອື່ນໆທີ່ພວກເຮົາເປັນມະນຸດສາມາດຮັບຮູ້ໄດ້ຍົກເວັ້ນແຕ່ສ່ວນນ້ອຍໆ. ເລັກນ້ອຍມີພຽງສອງຄຸນຄ່າທີ່ເປັນໄປໄດ້, ນັ້ນແມ່ນລະຫັດ 0 ຫຼື 1 , ແທ້ ຫຼື ທີ່ບໍ່ຖືກຕ້ອງ , ແມ່ນແລ້ວ ຫຼື ບໍ່ມີ . ທຸກໆສິ່ງອື່ນໆເຊັ່ນ: ຕົວອັກສອນ, ຕົວເລກ, ຮູບພາບຕ່າງໆຕ້ອງເປັນຕົວແທນໃນຖັງເພື່ອໃຫ້ຄອມພິວເຕີປະມວນຜົນ.

ໃນ ຄຳ ສັບທີ່ງ່າຍດາຍ, ການເຂົ້າລະຫັດຕົວອັກສອນແມ່ນວິທີການແຈ້ງຄອມພິວເຕີ້ວິທີການຕີຄວາມ ໝາຍ ສູນແລະວັດຖຸດິບໃຫ້ເປັນຕົວອັກສອນຕົວຈິງ, ເຊິ່ງຕົວອັກສອນຈະຖືກສະແດງໂດຍຕົວເລກທີ່ ກຳ ນົດໄວ້ ເມື່ອພວກເຮົາພິມຂໍ້ຄວາມໃສ່ໃນເອກະສານ, ຄຳ ສັບແລະປະໂຫຍກທີ່ພວກເຮົາປະກອບເປັນການປຸງແຕ່ງຈາກຕົວລະຄອນທີ່ແຕກຕ່າງກັນ, ແລະຕົວລະຄອນຕ່າງໆຈະຖືກຈັດເປັນ charset.

ມີລະບົບການເຂົ້າລະຫັດຕ່າງໆທີ່ມີຢູ່ເຊັ່ນວ່າ ASCII, ANSI, Unicode ໃນບັນດາຮູບແບບອື່ນໆ. ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງຂອງການເຂົ້າລະຫັດ ASCII.

Character  bits
A               01000001
B               01000010

ໃນ Linux, ເຄື່ອງມືບັນທັດເສັ້ນ ຄຳ ສັ່ງ iconv ຖືກໃຊ້ເພື່ອປ່ຽນຂໍ້ຄວາມຈາກຮູບແບບ ໜຶ່ງ ຂອງການເຂົ້າລະຫັດໄປຫາອີກແບບ ໜຶ່ງ.

ທ່ານສາມາດກວດສອບການເຂົ້າລະຫັດຂອງແຟ້ມໂດຍໃຊ້ ຄຳ ສັ່ງເອກະສານ, ໂດຍການໃຊ້ -i ຫຼື - mime ທີ່ສາມາດເຮັດໃຫ້ການພິມຂອງສາຍ mime type ເຊັ່ນໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:

$ file -i Car.java
$ file -i CarDriver.java

syntax ສຳ ລັບການໃຊ້ iconv ມີດັ່ງນີ້:

$ iconv option
$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile 

ບ່ອນທີ່ -f ຫຼື - ລະຫັດລະຫັດ ໝາຍ ເຖິງລະຫັດການປ້ອນຂໍ້ມູນແລະ -t ຫຼື - ເພື່ອເຂົ້າລະຫັດ ລະບຸ ການເຂົ້າລະຫັດຜົນຜະລິດ.

ເພື່ອບອກຊຸດຕົວອັກສອນທີ່ຮູ້ຈັກລະຫັດທັງ ໝົດ, ດຳ ເນີນການ ຄຳ ສັ່ງດັ່ງລຸ່ມນີ້:

$ iconv -l 

ປ່ຽນເອກະສານຈາກ UTF-8 ຫາການເຂົ້າລະຫັດ ASCII

ຕໍ່ໄປ, ພວກເຮົາຈະຮຽນຮູ້ວິທີການແປງຈາກລະບົບການເຂົ້າລະຫັດແບບ ໜຶ່ງ ໄປຫາອີກແບບ ໜຶ່ງ. ຄໍາສັ່ງຂ້າງລຸ່ມນີ້ປ່ຽນຈາກການເຂົ້າລະຫັດ ISO-8859-1 ເປັນການເຂົ້າລະຫັດ UTF-8.

ພິຈາລະນາເອກະສານທີ່ມີຊື່ວ່າ input.file ເຊິ່ງມີຕົວອັກສອນ:

� � � �

ໃຫ້ພວກເຮົາເລີ່ມຕົ້ນໂດຍການກວດສອບການເຂົ້າລະຫັດຂອງຕົວອັກສອນໃນເອກະສານແລະຈາກນັ້ນເບິ່ງເນື້ອໃນຂອງເອກະສານ. ຢ່າງໃກ້ຊິດ, ພວກເຮົາສາມາດປ່ຽນຕົວອັກສອນທັງ ໝົດ ໃຫ້ເປັນການເຂົ້າລະຫັດ ASCII.

ຫຼັງຈາກທີ່ເຮັດວຽກ ຄຳ ສັ່ງ iconv, ຫຼັງຈາກນັ້ນພວກເຮົາກວດເບິ່ງເນື້ອໃນຂອງເອກະສານຜົນຜະລິດແລະການເຂົ້າລະຫັດ ໃໝ່ ຂອງໂຕອັກສອນດັ່ງລຸ່ມນີ້.

$ file -i input.file
$ cat input.file 
$ iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
$ cat out.file 
$ file -i out.file 

ໝາຍ ເຫດ: ໃນກໍລະນີເຊືອກ /IGNORE ຖືກເພີ່ມໃສ່ການເຂົ້າລະຫັດ, ຕົວອັກສອນທີ່ບໍ່ສາມາດແປງໄດ້ແລະຂໍ້ຜິດພາດຈະຖືກສະແດງຫຼັງຈາກປ່ຽນໃຈເຫລື້ອມໃສ.

ອີກເທື່ອ ໜຶ່ງ, ຖ້າສົມມຸດວ່າລະຫັດ /TRANSLIT ຖືກຕື່ມໃສ່ລະບົບເຂົ້າລະຫັດຄືກັບໃນຕົວຢ່າງຂ້າງເທິງ (ASCII/TRANSLIT), ຕົວອັກສອນທີ່ຖືກແປງຈະຖືກແປເປັນຄວາມຕ້ອງການແລະຖ້າເປັນໄປໄດ້. ເຊິ່ງສະແດງເຖິງກໍລະນີທີ່ຕົວອັກສອນບໍ່ສາມາດເປັນຕົວແທນໃນຕົວອັກສອນເປົ້າ ໝາຍ ໄດ້, ມັນສາມາດຖືກປະມານໂດຍຜ່ານ ໜຶ່ງ ຫຼືຫຼາຍຕົວອັກສອນທີ່ຄ້າຍຄືກັນ.

ດ້ວຍເຫດນັ້ນ, ຕົວລະຄອນໃດ ໜຶ່ງ ທີ່ບໍ່ສາມາດແປໄດ້ແລະບໍ່ຢູ່ໃນຕົວອັກສອນເປົ້າ ໝາຍ ຖືກແທນດ້ວຍເຄື່ອງ ໝາຍ ຄຳ ຖາມ (?) ໃນຜົນໄດ້ຮັບ.

ປ່ຽນເອກະສານທີ່ຫຼາກຫຼາຍເປັນການເຂົ້າລະຫັດແບບ UTF-8

ກັບມາຫາຫົວຂໍ້ຫຼັກຂອງພວກເຮົາ, ເພື່ອປ່ຽນເອກະສານທີ່ຫຼາກຫຼາຍຫຼືທັງ ໝົດ ໃນໄດເລກະທໍລີເປັນລະຫັດເຂົ້າລະຫັດ UTF-8, ທ່ານສາມາດຂຽນສະຄິບຫອຍນ້ອຍທີ່ເອີ້ນວ່າ encoding.sh ດັ່ງຕໍ່ໄປນີ້:

#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
#loop to convert multiple files 
for  file  in  *.txt; do
     $CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

ຊ່ວຍປະຢັດເອກະສານ, ຫຼັງຈາກນັ້ນເຮັດໃຫ້ສະຄິບປະຕິບັດໄດ້. ດໍາເນີນການມັນຈາກໄດເລກະທໍລີທີ່ໄຟລ໌ຂອງທ່ານ ( *. txt ) ຕັ້ງຢູ່.

$ chmod  +x  encoding.sh
$ ./encoding.sh

ສິ່ງ ສຳ ຄັນ: ທ່ານສາມາດໃຊ້ສະຄິບນີ້ ສຳ ລັບການປ່ຽນເອກະສານທົ່ວໄປຈາກຫຼາຍລະຫັດຈາກການເຂົ້າລະຫັດ ໜຶ່ງ ຫາອີກຂໍ້ ໜຶ່ງ, ພຽງແຕ່ຫຼີ້ນອ້ອມກັບຄ່າຂອງລະຫັດຕົວປ່ຽນຈາກ FROM_ENCODING ແລະ TO_ENCODING , ບໍ່ແມ່ນ ລືມຊື່ໄຟລ໌ຜົນຜະລິດ "& # 36 {file% .txt} .utf8.converted" .

ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງຜ່ານ ໜ້າ man iconv.

$ man iconv

ເພື່ອສະຫຼຸບ ຄຳ ແນະ ນຳ ນີ້, ການເຂົ້າໃຈການເຂົ້າລະຫັດແລະວິທີການປ່ຽນຈາກລະບົບການເຂົ້າລະຫັດແບບອັກສອນ ໜຶ່ງ ໄປຫາອີກຂໍ້ ໜຶ່ງ ແມ່ນຄວາມຮູ້ທີ່ ຈຳ ເປັນ ສຳ ລັບຜູ້ໃຊ້ຄອມພິວເຕີ້ທຸກໆຄົນຍິ່ງກວ່ານັ້ນ ສຳ ລັບນັກຂຽນໂປແກຼມເມື່ອກ່ຽວຂ້ອງກັບການຂຽນຂໍ້ຄວາມ.

ສຸດທ້າຍ, ທ່ານສາມາດຕິດຕໍ່ກັບພວກເຮົາໂດຍໃຊ້ພາກ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້ ສຳ ລັບ ຄຳ ຖາມຫຼື ຄຳ ຕິຊົມໃດໆ.