คำถามติดแท็ก character-encoding

คำถามที่เกี่ยวข้องกับการแสดงตัวละครและชุดอักขระต่าง ๆ เช่น: ASCII, UTF-8, EBCDIC และอื่น ๆ มักพบเมื่อย้ายไฟล์ระหว่างระบบปฏิบัติการที่เข้ารหัสบรรทัดใหม่ด้วยการขึ้นบรรทัดใหม่และ / หรืออักขระขึ้นบรรทัดใหม่

3
วิธีแก้ไขตัวอักษรรัสเซียในแอปพลิเคชันไวน์เมื่อปรับ LANG ไม่ช่วยได้อย่างไร
แอปพลิเคชันที่มี UI ของรัสเซียแสดงเครื่องหมายคำถามแทนข้อความส่วนใหญ่ (องค์ประกอบบางอย่างจะแสดงผลโอเค) โลแคลระบบคือภาษาอังกฤษ (en_US, en_IE) ฉันได้ลองใช้ Ubuntu ant XUbuntu 12.04 กับ Wine 1.5 ฉันพยายามเปิดตัวแอปพลิเคชันด้วย LANG=ru_RU.utf8 wine myapp.exe แต่มันก็ไม่ได้ช่วยอะไร ฉันได้ตรวจสอบว่าttf-mscorefonts-installerมีการติดตั้งแล้ว ถ้าฉันใช้ Windows การตั้งค่า codepage ของรัสเซียสำหรับแอพที่ไม่ใช่ Unicode ในแผงควบคุมจะช่วยแก้ปัญหาได้ ความคิดใด ๆ

2
คำถามมากมายเกี่ยวกับการเข้ารหัสอักขระระบบไฟล์บน linux
เนื่องจากการแลกเปลี่ยนไฟล์จำนวนมากทำงานระหว่าง Windows (การเข้ารหัสGBK ) และ Linux (การเข้ารหัส UTF-8 ) มันจะพบปัญหาการเข้ารหัสอักขระได้อย่างง่ายดายเช่น: ไฟล์ zip / tar ที่มีชื่อมีตัวอักษรจีนในระบบ Windows ให้แตกซิป / untar ในระบบ Linux เรียกใช้เว็บแอปพลิเคชัน java แบบเก่าที่ย้ายข้อมูล (ออกแบบบนระบบ Windows โดยใช้การเข้ารหัส GBK ใน JSP) ซึ่งเขียนไฟล์ที่เข้ารหัสด้วยชื่อ GBK ลงในดิสก์ ftp รับ / ใส่ไฟล์ที่มีชื่อเข้ารหัส GBK ระหว่างเซิร์ฟเวอร์ Windows FTP และไคลเอนต์ Linux เปลี่ยนสภาพแวดล้อม LANG ใน Linux ปัญหาทั่วไปของที่กล่าวถึงก่อนหน้าคือการระบุตำแหน่งไฟล์ / หลังจาก …

2
ทำไม wc -m และ wc -c ต่างกัน?
ในฐานะโปรแกรมเมอร์ C ฉันรู้สึกประหลาดใจที่เห็นว่าwc -c(ซึ่งนับจำนวนไบต์) และwc -m(ซึ่งนับจำนวนอักขระ) ผลลัพธ์ผลลัพธ์ที่แตกต่างกันมากสำหรับไฟล์ข้อความขนาดยาวของฉัน ฉันได้รับการบอกเสมอว่าsizeof(char)มี 1 ไบต์ qdii@nomada ~/Documents $ wc -c sentences.csv 102990983 sentences.csv qdii@nomada ~/Documents $ wc -m sentences.csv 89023123 sentences.csv คำอธิบายใด ๆ

2
POSIX รองรับการเข้ารหัสอักขระใดบ้าง
POSIX กำหนดพฤติกรรมของเครื่องมือเช่นgrep, awk, sedฯลฯ ซึ่งการทำงานกับไฟล์ข้อความ เนื่องจากเป็นไฟล์ข้อความฉันคิดว่ามีปัญหาในการเข้ารหัสอักขระ คำถาม: การเข้ารหัสอักขระรองรับ POSIX คืออะไร (หรือไฟล์ข้อความของระบบเข้ารหัสที่ POSIX สามารถจัดการได้)

4
รองรับการเข้ารหัส utf-8 ด้วย lpr
ในขณะที่พยายามส่งไฟล์ข้อความไปยังเครื่องพิมพ์ผ่านlprจากxtermเนื้อหาที่ได้รับความเสียหายเกินกว่าการรับรู้สาเหตุของการที่ถูกโยงไปถึงการเข้ารหัสไฟล์ในที่สุด หากฉันประมวลผลข้อความด้วยiconv(เช่น, iconv -f utf-8 -t ascii//TRANSLIT) แสดงว่าไฟล์ถูกพิมพ์ตามปกติ ข้อเสนอแนะของฉันมาข้ามก็คือการตั้งค่ารูปแบบเอกสาร (เช่นlpr -o document-format=text/utf8) lpr: Unsupported document-format "text/utf8"แต่ผลตอบแทนนี้ข้อผิดพลาด ฉันสามารถนามแฝงlprคำสั่งเพื่อรวมการประมวลผลโดยiconvแต่มีวิธีทั่วไปมากขึ้นสำหรับการสนับสนุน utf-8 พื้นเมืองในระบบCUPS/ lpr? แก้ไข:ระบบปฏิบัติการของฉันคือ Debian 8 และตัวจัดการหน้าต่างของฉันคือopenbox(ไม่มีสภาพแวดล้อมบนเดสก์ท็อป) ฉันสามารถพิมพ์ไฟล์นี้โดยไม่มีปัญหาจาก MacOS X รวมถึงจากระบบ Debian7 / Gnome3 จากระบบปัจจุบันของฉันฉันควรชี้ให้เห็นว่าแม้หลังจากเปลี่ยนการเข้ารหัสอักขระจาก UTF-8 เป็น ASCII แล้วอักขระบรรทัดใหม่จะไม่ได้รับการเคารพlprดังนั้นบรรทัดจะถูกต่อกันเข้าด้วยกันและพิมพ์จนกว่าจะถึงระยะขอบกระดาษ หลังจากการบันทึกและการทับศัพท์ด้วยiconvบน MacOS X การพิมพ์ยังคงใช้งานได้ตามปกติ

2
เทอร์มินัล: แสดงอักขระพิเศษ
ในบางโปรแกรมเช่นhtopบรรทัดและเฟรมไม่แสดงขึ้นอย่างถูกต้อง แต่พวกเขาจะแสดงเป็นและ-/ แต่ในเครื่องอื่นมันจะแสดงอย่างถูกต้องเป็นบรรทัดที่เหมาะสม: ฉันไม่แน่ใจว่านี่เป็นปัญหาของเทอร์มินัลหรืออาจจำเป็นต้องมีแพ็คเกจบางอย่าง ในกรณีที่มีความเกี่ยวข้อง: ระบบของฉันคือ Debian Wheezy, ล่ามของฉันคือbashและตัวจำลองเทอร์มินัลของฉันคือgnome-terminal

3
ผลกระทบของ $ LANG บนเทอร์มินัล
ฉันพยายามที่จะเรียนรู้ว่า$LANGตัวแปรทำงานอย่างไรกับ gnome-terminal (และตัวเลือกการตั้งค่าการเข้ารหัสอักขระ) ฉันใช้ iso8859-1 (latin1) เป็นตัวละครหลักของฉันและชื่อไฟล์ทั้งหมดของฉันถูกเข้ารหัสเช่นนี้ สำหรับการทดสอบต่อไปนี้ฉันจะทำls -lไดเรกทอรีที่มีอักขระเน้นเสียงภาษาสเปนในชื่อไฟล์ของพวกเขา: กรณี # 1: gnome-terminal ที่กำหนดค่าไว้สำหรับ ISO-8859-1 LANG ตั้งค่าเป็น "en_US-iso8859-1" ผลลัพธ์: ฉันเห็นไฟล์ทั้งหมดอย่างถูกต้อง กรณีที่ 2: gnome-terminal กำหนดค่าสำหรับ UTF-8 LANG ตั้งค่าเป็น "en_US-iso8859-1" ผลลัพธ์: ฉันเห็นอักขระขยะสำหรับอักขระภาษาสเปนทั้งหมด สิ่งนี้คาดว่าจะเกิดขึ้นเมื่อฉันเปลี่ยนการเข้ารหัสอักขระสำหรับเทอร์มินัล กรณี # 3: gnome-terminal ที่กำหนดค่าไว้สำหรับ ISO-8859-1 LANG ตั้งค่าเป็น "en_US-UTF-8" ผลลัพธ์: ฉันเห็นอักขระขยะสำหรับอักขระภาษาสเปนทั้งหมด ทำไมในกรณีนี้ฉันเห็นตัวอักษรที่อ่านไม่ออก ผลลัพธ์ของlsไม่ควรส่งชื่อไฟล์ไปยัง gnome-terminal อย่างที่เป็นหรือ และเนื่องจาก gnome-terminal ได้รับการกำหนดค่าสำหรับ ISO-8859-1 …

1
เหตุใดชื่อไฟล์ของฉันจึงดู 'ปกติ' ใน Linux แต่ไม่ใช่ในระยะไกลบน Windows
ในขณะที่ทำงานกับเพื่อนร่วมงานฉันพบปัญหาแปลก ๆ ที่เกี่ยวข้องกับการเข้ารหัส เรากำลังทำงานกับภาพบางส่วนที่มีชื่อไฟล์ที่เรียบง่ายพอเช่นcity.gifหรือwine.gifแต่เป็นหนึ่งอาจคาดหวังสิ่งที่ได้รับความซับซ้อนมากขึ้นเมื่อใช้อักขระพิเศษเช่นé, ,ë àเรากำลังทำงานกับข้อมูลดัตช์ที่มีตัวละครเหล่านี้เช่นcafé( pub ) (เราไม่สามารถควบคุมที่มาของไฟล์ได้) ที่นี่มีปัญหาเกิดขึ้น ชื่อไฟล์ต่อไปนี้เป็นเพียงตัวอย่าง ปัญหานี้ยังเกิดขึ้นสำหรับตัวละครอื่น ๆ ที่มีกำกับ café-2.png cafetaria.png café.png รายการแรกและครั้งสุดท้ายควรมีสำเนียงอีในการมี (สำเนียง aigu, é) นั่นเป็นวิธีการที่จะแสดงในลินุกซ์ (CentOS 6 & 7) lsในขั้วเมื่อทำงาน แต่ Windows มาที่นี่! (ใช้ Windows 10, 64 บิต) เมื่อเชื่อมต่อบน Windows ผ่าน SSL กับเซิร์ฟเวอร์ของเราแล้วโทรlsออกรายการด้านบนจะมีลักษณะดังนี้: café-2.png cafetaria.png caf▒.png ในขณะที่คุณหวังว่าจะเห็นบรรทัดแรกยังคงมีสำเนียงอี éแต่หนึ่งในสามไม่ได้ แต่ฉันเห็น▒ตัวละครนี้ - ซึ่งอยู่medium shadeใน Unicode …

2
ระบุการเข้ารหัสด้วย libreoffice --convert-to csv
ไฟล์ Excel สามารถแปลงเป็น CSV โดยใช้: $ libreoffice --convert-to csv --headless --outdir dir file.xlsx ทุกอย่างดูเหมือนจะทำงานได้ดี อย่างไรก็ตามการเข้ารหัสนั้นถูกตั้งค่าไว้ที่สิ่งที่สกปรก แทนที่จะเป็น UTF-8 mdash (-) ที่ฉันได้รับถ้าฉันทำ "บันทึกเป็น" ด้วยตนเองจาก LibreOffice Calc มันให้ฉัน \ 227 ( ) การใช้ไฟล์ใน CSV ทำให้ฉัน "ข้อความที่ไม่ใช่ ASCII แบบขยาย ASCII, มีบรรทัดที่ยาวมาก" ดังนั้นสองคำถาม: เกิดอะไรขึ้นที่นี่ ฉันจะบอกให้ libreoffice เปลี่ยนเป็น UTF-8 ได้อย่างไร ไฟล์เฉพาะที่ฉันพยายามที่จะแปลงเป็นที่นี่

1
แอพบางตัวไม่ยอมรับอักขระบางตัวจากปุ่ม«เขียน»
ปัญหาคือว่าปุ่มเขียนข้อความใช้งานได้ดี แต่แอปพลิเคชั่นบางตัวไม่ยอมรับอักขระบางตัว เช่นฉันสามารถพิมพ์อักขระ∞ใน Emacs ( Compose+ 8+ 8) แต่สิ่งนี้จะไม่ทำงานใน FireFox, Konsole และ Kate แต่ตัวละครอื่น ๆ อีกมากมายเช่น€พิมพ์ที่นั่น(ใน FireFox, Konsole และ Kate)ด้วยComposeทำงานได้ดี นอกจากนี้ผมอาจแทรกสัญลักษณ์ปัญหาด้วยง่ายคัดลอกวาง(จากส่วนใดของสอง clipboards) ดังนั้นสิ่งที่อาจทำให้เกิดและวิธีการแก้ไขหรือไม่ ขออภัยฉันไม่รู้ว่าจะค้นคว้าปัญหานี้อย่างไร ฉันพบคนที่มีคีย์การเขียนไม่ได้เลยในบางแอพ แต่ในกรณีของฉันมันใช้งานได้ แต่บางส่วน ตั้งค่า:คีย์การเขียนที่เชื่อมโยงกับปุ่ม Super ที่สำคัญทั้งใน/etc/default/keyboardและการตั้งค่าคีย์บอร์ด KDE

4
ฉันจะระบุตัวละครที่แปลกได้อย่างไร
ฉันพยายามระบุตัวละครแปลก ๆ ที่ฉันพบในไฟล์ที่ฉันทำงานด้วย: $ cat file � $ od file 0000000 005353 0000002 $ od -c file 0000000 353 \n 0000002 $ od -x file 0000000 0aeb 0000002 ไฟล์กำลังใช้การเข้ารหัส ISO-8859 และไม่สามารถแปลงเป็น UTF-8 ได้: $ iconv -f ISO-8859 -t UTF-8 file iconv: conversion from `ISO-8859' is not supported Try `iconv --help' …

2
อักขระพิเศษในชื่อไฟล์ (\ # 033OA)
ฉันมีปัญหาเล็กน้อยกับข้อผิดพลาดปากแข็งมากระหว่าง rsync มันเกิดจากไฟล์ที่มีตัวละครพิเศษในชื่อไฟล์ มีคนอื่นมาบ้าง แต่ฉันสามารถแยกแยะได้ด้วยการเปลี่ยนใจเลื่อมใสในการเข้ารหัสของชื่อไฟล์ อย่างไรก็ตามไฟล์นี้ฉันไม่สามารถหาได้ ดังนั้นนี่คือสิ่งที่ rsync พูดว่า: ../.\#033OA.tex.pyD0MB" failed: No such file or directory (2) สิ่งแรกที่สังเกตได้คือรหัสอักขระไม่สามารถเป็นเลขฐานสิบหกหรือฐานแปดได้ดังนั้นฉันจึง googled และพบสิ่งนี้เท่านั้น ดังนั้นมันอาจเป็นCURSOR UPตัวละคร (หรือไม่ก็ได้) ฉันได้พยายาม ls -la *`printf '\033OA'`* ไม่มีประโยชน์ ฉันได้ลองไปป์ไลน์เอาต์พุตของ ls ของไดเร็กทอรีนั้นแล้วว่าodไม่มีประโยชน์ ฉันจะทำอะไรได้อีก หรือฉันกำลังมองหาตัวละครอะไรอยู่? ขอบคุณ

3
ประมวลผลไฟล์ที่ขึ้นต้นด้วย BOM (FF FE)
ฉันได้รับไฟล์. csv พร้อมFF FEBOM: $ head -n1 dotan.csv | hd 00000000 ff fe 41 00 64 00 20 00 67 00 72 00 6f 00 75 00 |..A.d. .g.r.o.u.| เมื่อใช้awkในการแยกมันฉันได้รับพวงไบต์ว่างซึ่งฉันสงสัยว่าเกิดจากการสั่งไบต์ ฉันจะสลับลำดับไบต์บนไฟล์นี้ (โดยใช้ CLI) เพื่อให้เครื่องมือปกติทำงานได้อย่างไร โปรดทราบว่าฉันคิดว่าไฟล์นี้เป็นอักขระ ASCII เท่านั้น (ยกเว้น BOM) แต่ฉันไม่สามารถยืนยันได้อย่างที่grepคิดว่าเป็นไฟล์ไบนารี: $ grep -P '^[\x00-\x7f]' dotan.csv Binary file dotan.csv matches การค้นหาสตริงเดียวกันใน …

1
`^ M` ที่ส่วนท้ายของไฟล์ข้อความแต่ละบรรทัดที่สร้างขึ้นภายใต้ Windows
ฉันสงสัยว่าทำไมถ้าคุณเปิดไฟล์ข้อความที่ทำใน Windows notepad ภายใต้ยูนิกซ์คุณจะพบว่ามันมี^Mตำแหน่งที่ควรมีบรรทัดใหม่หรือไม่ ความเข้าใจของฉันคือว่าใน Windows สายทุกคนจะจบลงด้วย\r\nเช่น 0x0D0Aใน ASCII ในขณะที่มีค่า^M ASCII 0x5E4Dฉันไม่สามารถเกี่ยวข้องทั้งสองนี้จากที่หนึ่งไปที่อื่น

2
ฉันจะเปลี่ยนภาษา / การเข้ารหัสเพื่อหลีกเลี่ยงการรับตัวอักษรแปลก ๆ ในเทอร์มินัลได้อย่างไร
ฉันได้ติดตั้งtreeบนกล่อง Ubuntu ของฉันเมื่อฉันเชื่อมต่อกับมันจาก Putty และฉันเริ่มtreeฉันได้รับ: $ tree âââ html.vim -> xml.vim âââ js.vim -> xml.vim âââ xml.vim แทนสิ่งนี้: $ tree --charset=ANSII |-- html.vim -> xml.vim |-- js.vim -> xml.vim `-- xml.vim ฉันยังได้รับปัญหานี้เมื่อฉันแสดงรายการแพคเกจของฉันจากnpm(ผู้จัดการแพ็คเกจจากnodejs) $ npm list /home/monkey/scripts/chatter ââ⏠express@3.0.6 â âââ buffer-crc32@0.1.1 â âââ commander@0.6.1 â ââ⏠connect@2.7.2 â â âââ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.