โปรไฟล์ Gnome Terminal สามารถใช้ UTF-8 เป็นค่าเริ่มต้นได้หรือไม่


19

ฉันใช้ระบบ Ubuntu (ฉันคิดว่า) ฉันไม่มีรูทดังนั้นฉันจึงไม่สามารถเปลี่ยนภาษาได้ ฉันต้องการให้โปรไฟล์เทอร์มินัลเริ่มต้นของฉันใช้ UTF-8 เป็นค่าเริ่มต้น ควรมีวิธีการทำเช่นนี้ไม่ว่าจะใน.gconf/apps/gnome-terminal/ไดเรกทอรีที่ใดที่หนึ่งหรือในตัวแปรสภาพแวดล้อมหรือบางสิ่งบางอย่าง อย่างไรก็ตามฉันไม่สามารถหามันได้

แก้ไขพร้อมรายละเอียดเพิ่มเติม:

ในเทอร์มินัลฉันมี:

grid-unv55$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
grid-unv55$ gnome-terminal

เมื่อพยายามเพิ่มเอกสาร UTF ในเทอร์มินัลใหม่นั้นฉันจะได้รับ:

\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd
\noise:bgspeech \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd

ซึ่งปรากฏบนหน้าจอของฉันเป็นจุด (uffds เป็นการตัดและแปะฉันทิ้ง "\ noise: bgspeech" ไว้ที่นั่นเพื่อให้คุณเห็นว่า ascii นั้นถูกตัดและวางอย่างถูกต้อง)

คำตอบ:


12

ผมเชื่อว่าคำพังเพยขั้วจะเป็นเพียงแค่การทำงานกับ UTF-8 จะเปิดใช้งานในเปลือกดังนั้นสิ่งที่คุณต้องทำคือการเปิดใช้งานที่ ใส่

export LANG=en_US.UTF-8

ใน~/.bashrcและที่นั่นคุณไป


แก้ไข:

ตกลงดังนั้นขณะนี้คำตอบคือคุณไม่สามารถตั้งค่านี้ได้ Gnome Terminal ตามการตั้งค่า LANG ของสภาพแวดล้อมปัจจุบันและใช้การเข้ารหัสสำหรับค่านั้นเป็นค่าเริ่มต้น ดังนั้นคุณต้องทำให้ LANG บรรจุ UTF-8 ก่อนที่จะเปิด gnome-terminal การตั้งค่านี้~/.bashrcควรทำ - คุณเพียงแค่ต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้ง

(โปรดทราบว่าจริง ๆ แล้วควรใส่สิ่งนี้ไว้~/.bash_profileเพื่อให้คุณสามารถแทนที่มันสำหรับ subshells แต่ฉันไม่แน่ใจว่า bash นั้นจำเป็นต้องใช้เป็นเชลล์การเข้าสู่ระบบซึ่งเป็นส่วนหนึ่งของการตั้งค่าสภาพแวดล้อม Gnome นั่นคือการทดสอบที่คุ้มค่า .... )


1
ดูเหมือนจะไม่ทำงาน
Brian Postow

อืมมม ตามค่าเริ่มต้นคือ $ LANG การใส่สิ่งนั้นลงใน bashrc ของคุณทำให้มันเปลี่ยนไปไหม
mattdm

C และวางไว้ใน bashrc ทำให้มันเปลี่ยนไป ได้รับฉันไม่ได้ออกจากระบบและกลับเข้าสู่ระบบอีกครั้ง แต่ฉันเริ่มต้นเทอร์มินัลใหม่และมันเริ่มต้นด้วย UTF ใน LANG (และสถานที่ตั้งถูกตั้งค่าด้วย UTF เช่นกัน) แต่เทอร์มินัลก็ไม่แสดงภาษาญี่ปุ่น ...
Brian Postow

1
ก่อนหน้านี้มันเพิ่งจะได้รับการตั้งค่าในเชลล์ภายใน gnome-terminal ตอนนี้มันเริ่มต้นขึ้นแล้วในสภาพแวดล้อมที่ตัว gnome-terminal ทำงาน
mattdm

2
ภายใต้ Ubuntu 10.04 คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมสำหรับเซสชันทั้งหมดจากการ~/.profile- ไม่ได้~/.bashrcและไม่ได้~/.bash_profileอย่างใดอย่างหนึ่ง
Gilles 'หยุดความชั่วร้าย'

9

คุณสามารถตั้งค่าโลแคลgnome-terminalด้วยคำสั่งต่อไปนี้โดยที่Defaultเป็นชื่อของโปรไฟล์

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding en_US.UTF-8

สิ่งนี้ใช้ได้สำหรับฉัน แต่ก็ไม่จำเป็นหลังจากเปลี่ยนLANG=en_US.UTF-8ใน.bashrcและรีสตาร์ท
Antonios Hadjigeorgalis

ใช้งานได้ดีสำหรับฉัน!
Josh M.

7

ฉันมีปัญหาที่คล้ายกันและเมื่อการตั้งค่าLANGใน.bash_profileไม่ได้ทำเคล็ดลับฉันพบว่าใน Gnome สถานที่เริ่มต้นสามารถตั้งค่าได้ที่จุดเริ่มต้นของเซสชั่นจากหน้าจอเข้าสู่ระบบ GDM สิ่งนี้สามารถทำได้โดยไม่ต้องเข้าถึงรูท


3

ฉันเพิ่งตรวจสอบในmenu->terminal->set character encodingมันคือ utf-8

อาคารผู้โดยสารและทุบตีไม่เหมือนกัน

ฉันจะเริ่มต้นด้วยการทำcat utf-8-file(cat และ bash จะส่งไฟล์นี้ไม่เปลี่ยนแปลงไปยังเทอร์มินัล (จริง ๆ แล้วคือ stty, stty จะแปลง newline เป็น carrage return, newline เป็นต้น)) ถ้าสิ่งนี้แสดงไฟล์ได้อย่างถูกต้อง (นี่คือทั้งหมดที่ฉันเคยทำเมื่อฉันใช้ utf-8 ในภาษาอังกฤษมันถูกตั้งค่าแล้วใน Ubuntu 10.10 และ Debian 6 สำหรับฉัน) ดังนั้นเพียงแค่ตั้งค่า bash เป็นต้น

อ่านซ้ำ ~ / .bashrc

หากคุณแก้ไข~/.bashrcคุณต้องอ่านใหม่. ~/.bashrc(หรือเริ่มเชลล์ใหม่) (อย่าลืมจุด)


1
เมื่อฉันเปลี่ยนการเข้ารหัสอักขระเป็น utf-8 ด้วยตนเองนั่นคือสิ่งที่ฉันทำ แต่เมื่อฉันเริ่ม gnome-terminal ใหม่แม้จากเทอร์มินัลที่มีสถานที่ที่ถูกต้องการเข้ารหัสยังคงเป็น ascii ฉันจะเพิ่มรายละเอียดให้กับคำถาม
Brian Postow

3

ฉันมีปัญหาตอนนี้ที่ฉันแก้ไขซึ่งอาจเกี่ยวข้องกับผู้มาใหม่ด้วย GNOME รุ่นใหม่กว่า (และ gnome-terminal):

สำหรับการเข้ารหัสข้อความใด ๆ ที่คุณต้องการใช้เชลล์ (เช่น bash) และเทอร์มินัลอีมูเลเตอร์ (เช่น gnome-terminal) จะต้องใช้การเข้ารหัสเดียวกัน ตัวอย่างเช่นถ้าเชลล์ใช้en_US.utf8และเทอร์มินัลอีมูเลเตอร์ใช้en_US.ISO-8859-1(aka latin1) คุณจะเห็นข้อความแปลก ๆ ในเทอร์มินัลสำหรับโปรแกรมใด ๆ ที่มีเอาต์พุต UTF-8

ตอนนี้ฉันไม่สามารถตั้งค่าการเข้ารหัสเมื่อเข้าสู่ระบบตามที่ฉันเห็นการแนะนำจะเป็นไปได้ อาจเป็นเพราะเรามี GDM รุ่นเก่ากว่าอยู่ที่นี่ นี่คือเหตุผลที่ฉันต้องการโซลูชันที่แตกต่าง

อย่างไรก็ตาม GNOME 3 ไม่ได้ดูเหมือนจะมาโดยอัตโนมัติ.bashrcหรือ.profileเข้าสู่ระบบโดยอัตโนมัติ แต่เป็นแหล่งที่มา.gnomercซึ่งคุณสามารถใส่ตัวแปรสภาพแวดล้อมที่จะส่งออกไปยังโปรแกรม GNOME (เท่าที่ฉันจะบอกได้)

ใส่export LANG="en_US.utf8"ใน.gnomercจึงเริ่ม gnome-ขั้วโดยใช้การเข้ารหัส UTF-8 โดยค่าเริ่มต้นเมื่อตัวอย่างใหม่จะเริ่มต้น (เปลี่ยนสถานที่ของคุณตามความต้องการของคุณ)

หวังว่านี่จะเป็นประโยชน์กับใครบางคน!


-1

ดังที่ผู้ใช้คนอื่น ๆ บอกให้บอกเชลล์ว่าคุณใช้รหัสอะไรกับการเข้ารหัส

export LANG=en_US.UTF-8

วางสิ่งนี้ใน. bashrc และ gnome-terminal ควรเก็บไว้ในการเข้าสู่ระบบครั้งต่อไป

ตั้งค่าการเข้ารหัสสำหรับ gnome-terminal ได้ทันที: เมนู> เทอร์มินัล> ตั้งค่าการเข้ารหัสอักขระ

ตั้งค่าการเข้ารหัสเริ่มต้นอย่างถาวร: gconf-editor> แอป> gnome-terminal> โปรไฟล์> ค่าเริ่มต้น> การเข้ารหัส> utf-8


2
สิ่งนี้ไม่เป็นความจริงเลย สำหรับฉันฉันมีไฟล์. profile และไฟล์. bashrc เปลือกเข้าสู่ระบบของฉันเป็นทุบตี gnome-terminal ละเว้นการตั้งค่า LANG ใน. bashrc หากขัดแย้งกับการตั้งค่า LANG ใน. profile ดังนั้น LANG จำเป็นต้องตั้งค่าในทั้งสองไฟล์
Gary

เรียงจาก ... ความเข้าใจของฉันคือการทุบตีใช้. profileสำหรับล็อกอินเชลล์และ. bashrc เป็นอย่างอื่น บน Linux หน้าต่างคำสั่งใหม่ใช้. bashrc (สำหรับ Mac คือ. profile ) ฉันไม่ทราบว่ามีสถานการณ์ใดที่ทั้งสองจะทำงานโดยอัตโนมัติ แต่เป็นเรื่องธรรมดามากที่จะนำการกำหนดค่าทั้งหมดของคุณมารวมเข้าด้วยกัน โดยทั่วไปแล้ว. bashrcจะเรียกใช้จาก. profile (โดยทั่วไปแล้วจะมาจากเชลล์แบบโต้ตอบ) if [ -n "$BASH_VERSION" -a -f "$HOME/.bashrc"; then . "$HOME/.bashrc"; fi
Edward Falk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.