ไม่สามารถตั้งค่า LC_CTYPE เป็นภาษาเริ่มต้น: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว


54

ฉันมีคำถามที่แน่นอนเช่นนี้ แต่ไม่มีวิธีแก้ปัญหา ฉันพยายาม แต่มันใช้งานไม่ได้

ฉันจะแก้ไขปัญหาภาษาของฉันได้อย่างไร

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=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=

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
C.UTF-8
en_US.utf8
POSIX

เป็นเพราะ en_US.UTF-8 และ en_US.utf8 ไม่ตรงกันหรือไม่

จะแก้ไขอย่างไร


คุณอ่านaskubuntu.com/a/229512/387382นี้หรือไม่?
Helio

คำตอบ:


53

เปิดเทอร์มินัลแล้วยิงคำสั่งด้านล่าง:

export LC_ALL="en_US.UTF-8"

ใช้งานได้ แต่ทำไม
Yu Jiaao

16
นี้ไม่ได้แก้อะไรเลยเนื่องจากตัวแปรถูกทำลายในตอนท้ายของเซสชั่น ..
Etienne Gautier


ทางออกที่ดีในคำพูดเล็ก ๆ น้อย ๆ ฮ่า ๆ!
Redbob

1
เมื่อส่งออก var ฉันได้รับ:-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
nnyby

36

ปัญหาเดียวกันนี้ (LC_CTYPE = UTF-8 ซึ่งผิด) สามารถเกิดขึ้นได้เมื่อคุณล็อกอินผ่าน ssh จาก Mac ไปยังกล่อง linux และเทอร์มินัลของคุณจะตั้งค่าตัวแปรสภาพแวดล้อมโดยอัตโนมัติ มีช่องทำเครื่องหมายสำหรับสิ่งนั้น ยกเลิกการเลือกและคุณยินดีที่จะไป ใน iTerm อยู่ในโปรไฟล์ -> แท็บเทอร์มินัล


2
ใน iTerm ปิดการใช้งานช่อง "การตั้งค่า> รูปแบบ> เริ่มต้น> เทอร์มิ> สิ่งแวดล้อม> ตั้งค่าตัวแปรที่เกิดเหตุโดยอัตโนมัติ"
ecerulm

1
-1: ขณะนี้อาจใช้งานได้ นอกจากนี้คุณยังอาจส่งผลกระทบต่อพฤติกรรมของเทอร์มินัลท้องถิ่นของคุณรวมถึงพฤติกรรมของโฮสต์ทุกเครื่องที่คุณเชื่อมต่อด้วย ในขณะที่การค้นพบของคุณเป็นจริงมันเป็นความคิดที่ดีกว่าที่จะใช้ ssh_config เพื่อไม่ให้ส่ง LC_ * สำหรับโฮสต์ที่ทราบว่ามีปัญหา
Max Ried

3
คุณช่วยเพิ่มคำตอบของคุณเองพร้อมขยายคำอธิบายเพิ่มเติมว่าทำไมสิ่งนี้อาจส่งผลกระทบต่อพฤติกรรมของเทอร์มินัลท้องถิ่นของคุณและวิธีการบอก ssh_config ไม่ให้ส่ง LC_ * เพราะคุณแค่ -1 คำตอบของฉันโดยไม่มีคำอธิบายจริง
raarts

หากคุณกำลังเชื่อมต่อจาก MacOS โดยใช้ Terminal ให้ไปที่การตั้งค่า Terminal> ขั้นสูงและยกเลิกการเลือก "ตั้งค่าตัวแปรสภาพแวดล้อมของสถานที่เกิดเหตุเมื่อเริ่มต้น"
javaxian

สิ่งที่น่าจะเกิดขึ้นคือ: บนระบบโลคัลของคุณคุณได้ติดตั้งโลแคลไว้แล้วจากนั้นคุณเปลี่ยนไปใช้ระบบอื่นที่ไม่ได้ติดตั้งโลแคลนี้ ไคลเอ็นต์เทอร์มินัลจะบอกระบบรีโมตว่าโลแคลของคุณคืออะไรและระบบรีโมตจะไม่ตอบคำถามในภาษาที่ร้องขอ คุณมีสองวิธีในการแก้ไขปัญหานี้: คุณเปลี่ยนสิ่งที่ร้องขอหรือคุณเพิ่มสถานที่ที่ร้องขอไปยังระบบระยะไกล (ซึ่งต้องใช้การเข้าถึงรูท)
Jan

27

ฉันมีปัญหาที่คล้ายกันและเพิ่มบรรทัดด้านล่างใน/etc/default/localeไฟล์ของฉัน:

LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"

ฉันได้รับจากโพสต์นี้: ฉันจะแก้ไขปัญหาภาษาของฉันได้อย่างไร


3
ทีนี้การทำเช่นนั้นคุณจะจบลงด้วยการกำหนดค่าโลแคลที่ยุ่งเหยิงมาก /etc/environmentไม่ได้มีไว้สำหรับการตั้งค่าภาษาใน Ubuntu; /etc/default/localeคือ. นอกจากนี้ในกรณีของเดสก์ท็อปคุณไม่ควรตั้งค่าLC_ALLใด ๆ วิธีของคุณจะทำให้ UIs สำหรับการควบคุมการตั้งค่าภาษา / โลแคลบนเดสก์ท็อปเช่นการสนับสนุนภาษาไร้ประโยชน์
Gunnar Hjalmarsson

มันใช้งานได้จริง หลังจากรีบูท
TranslucentCloud

ออกจากระบบและเข้าสู่ระบบมันควรจะทำงาน
Sand1512

19

เฉพาะกับงานนี้สำหรับฉัน

sudo dpkg-reconfigure locales
sudo locale-gen

2
จริงๆแล้วsudo dpkg-reconfigure localesมีความจำเป็นเนื่องจากมันใช้ locale-gen
Etienne Gautier

9
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

ฉันใช้อินสแตนซ์ Vultr ที่เกือบจะสะอาดและมีปัญหาเหมือนในคำถามมองเข้าไปในสภาพแวดล้อมของ vars และทุกอย่างดูไม่เป็นไร อย่างไรก็ตามsudo dpkg-reconfigure localesทำสิ่งที่ต้องหายไป เซสชัน ssh ของฉันตกลง ขอบคุณ!
Jonas

6

เอาต์พุตจากlocaleคำสั่งระบุว่าคุณมีบรรทัดที่ไม่ถูกต้องในสภาพแวดล้อมของคุณ:

LC_CTYPE="UTF-8"

("UTF-8" ไม่ใช่ชื่อสถานที่ที่ถูกต้อง)

/etc/default/localeมันมักจะมาจาก โปรดลบบรรทัดนั้นออกถ้ามีแล้วทำการเชื่อมต่อใหม่

หากไม่ได้มาจากที่นั่นก็สามารถมาจากการกำหนดค่าเปลือกของคุณหรือถ้าคุณเข้าสู่ระบบจากระยะไกลผ่าน SSH จากการกำหนดค่าของเครื่องไคลเอนต์


ฉันจะเปลี่ยน LC_CTYPE เป็น utf8 ได้หรือไม่
Mave

@Lucas: ไม่ว่าจะเป็นเช่นเดียวกับที่ไม่ดี เนื่องจาก LANG ถูกตั้งค่าไว้คุณสามารถลบทั้งบรรทัดที่ขึ้นต้นด้วย LC_CTYPE
Gunnar Hjalmarsson

หากคุณต้องการตั้งค่า LC_TYPE คุณควรตั้งค่าเป็น "en_US.UTF-8"

dpkg-reconfigure localesถ้ามันมาจากการกำหนดค่าของเครื่องไคลเอนต์ที่คุณสามารถเพิ่มสถานที่เกิดเหตุอยู่บนเซิร์ฟเวอร์ด้วย
Paul Rougieux

5

คำสั่งนี้ช่วยชีวิตฉันไว้

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

5
sudoไฟล์จะถูกเปิดก่อน การเปลี่ยนเส้นทางจะไม่ทำงานจนกว่าคุณจะรูทแล้ว
Martin Thornton

3

ไฟล์ / etc / default / locale สามารถมีบรรทัดเพิ่มเติม (แต่ไม่จำเป็น): ไฟล์ตัวอย่างสามารถมีลักษณะดังนี้:

#  File generated by update-locale
LANG=en_US.UTF-8
LANGUAGE="en_IN:en

หากต้องการจัดเรียงและสร้างและกำหนดค่าตำแหน่งที่ตั้งใหม่สำเร็จให้ลบหรือใส่เครื่องหมายความคิดเห็นทุกบรรทัดจากไฟล์นี้ยกเว้น:

LANG=en_US.UTF-8

ไฟล์ควรมีลักษณะดังนี้:

#  File generated by update-locale
LANG=en_US.UTF-8
# LANGUAGE="en_IN:en

หลังจากนี้ให้เรียกใช้dpkg-reconfigure localesเลือก en_US.UTF-8 เมื่อได้รับแจ้งให้เลือกสถานที่และคุณน่าจะไปได้ คุณจะได้รับGeneration complete.ข้อความเมื่อกระบวนการเสร็จสมบูรณ์


0

ฉันจัดการเพื่อทำให้เกิดนี้เองเมื่อมีการย้ายไฟล์ไดเรกทอรีบ้านจุดไปยังเครื่องใหม่และฉันไม่สามารถระบุสาเหตุในขณะที่อยู่ในบัญชีของการค้นหาไฟล์สำหรับการแต่ไม่LC_LOC

~/.bashrcไฟล์ผมคัดลอกมีดังต่อไปนี้:

export LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

(ค่าเฉพาะที่นี่เป็นผลมาจากการทดลองก่อนหน้ากับ GNU Guix บนเครื่องเก่า แต่ความจริงที่เกี่ยวข้องคือเพียงแค่ว่าตัวแปรสภาพแวดล้อมถูกตั้งค่าเป็นเส้นทางที่ไม่ถูกต้องในขณะนี้)

ซึ่งส่งผลให้เกิดข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้โปรแกรมต่าง ๆ :

Warning: locale not supported by C library, locale unchanged

และข้อผิดพลาดเหล่านี้เมื่อทำงานlocale:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

การลบ (หรือแสดงความคิดเห็น) LOCPATHบรรทัดจะแก้ไขปัญหาของฉัน


0

เพียงแค่เรียกใช้ต่อไปนี้:

sudo apt-get upgrade

มันจะสร้างที่ตั้งทั้งหมดจากนั้นตั้งค่าเริ่มต้นเป็น US:

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