2010-01-10 18 views
13

मैं अपने todo-list को व्यवस्थित करने के लिए Gina Trapiani's excellent todo.sh का उपयोग कर रहा हूं।मैं शैल स्क्रिप्ट्स वर्ण एन्कोडिंग कैसे बदलूं?

हालांकि एक डेन होने के नाते, यह अच्छा होगा अगर स्क्रिप्ट ने विशेष डैनिश अक्षरों जैसे ओस्लाश को स्वीकार किया हो; और æ।

मैं एक पूर्ण यूनिक्स-एन 00 बी हूं, इसलिए अगर कोई मुझे यह बता सके कि इसे कैसे ठीक किया जाए तो यह एक बड़ी मदद होगी! :)

+0

मैं सफलतापूर्वक '.. कौन सा मंच आप उपयोग कर रहे मैक ओएस एक्स पर विस्तारित पात्रों के साथ todo.sh' का उपयोग किया है? – smokris

उत्तर

14

क्या इस आदेश दिखाती है?

locale 

यह आप के लिए कुछ इस तरह दिखाई देना चाहिए:

LANG=da_DK.UTF-8 

आप क्या कहते हैं नहीं है: इससे पहले कि आप अपनी स्क्रिप्ट चलाने

LC_CTYPE="da_DK.UTF-8" 
LC_NUMERIC="da_DK.UTF-8" 
LC_TIME="da_DK.UTF-8" 
LC_COLLATE="da_DK.UTF-8" 
LC_MONETARY="da_DK.UTF-8" 
LC_MESSAGES="da_DK.UTF-8" 
LC_PAPER="da_DK.UTF-8" 
LC_NAME="da_DK.UTF-8" 
LC_ADDRESS="da_DK.UTF-8" 
LC_TELEPHONE="da_DK.UTF-8" 
LC_MEASUREMENT="da_DK.UTF-8" 
LC_IDENTIFICATION="da_DK.UTF-8" 
LC_ALL= 

यदि नहीं, तो आप ऐसा करने की कोशिश कर सकते हैं तब होता है जब आप स्क्रिप्ट चलाते हैं और यह इन पात्रों से मुकाबला करता है। क्या वे todo फ़ाइल में हैं? क्या वे एक संकेत में प्रवेश कर रहे हैं? क्या कोई त्रुटि संदेश है? अपेक्षित आउटपुट के स्थान पर कुछ आउटपुट है?

इस प्रयास करें और देखें कि तुम क्या मिलता है:

read -p "Enter some characters" string 
echo "$string" 
+0

चल रहे LANG = da_DK.UTF-8 काम करता है! आपका बहुत बहुत धन्यवाद! :) – timkl

13

धीरे-धीरे, यूनिक्स दुनिया एएससीआईआई और अन्य क्षेत्रीय एन्कोडिंग से यूटीएफ -8 में जा रही है। आपको एक यूटीएफ टर्मिनल चलाने की जरूरत है, जैसे कि आधुनिक xterm या पुटी।

आपके ~/.bash_profile में आप यूटीएफ -8 प्रकारों में से एक होने के लिए भाषा सेट करते हैं।

export LANG=C.UTF-8 
or 
export LANG=en_AU.UTF-8 
etc.. 

आपको टर्मिनल में यूटीएफ -8 अक्षरों को लिखने में सक्षम होना चाहिए, और उन्हें बैश स्क्रिप्ट में शामिल करना चाहिए।

#!/bin/bash 
echo "UTF-8 is græat ☺" 

यह भी देखें: https://serverfault.com/questions/11015/utf-8-and-shell-scripts

+1

एक TTY (xterm नहीं) पर, टर्मिनल यूटीएफ -8 सक्षम नहीं हो सकता है जब तक कि 'यूनिकोड_स्टार्ट' चलाया न जाए। (यह लोकेल और खोल/अनुप्रयोग समर्थन से असंबंधित है।) कुछ वितरण इसे बूट पर सक्षम करते हैं, लेकिन कुछ नहीं करते हैं। – ephemient

+0

ओपी के सवाल से संबंधित नहीं है, लेकिन रिकॉर्ड के लिए पोस्टिंग। आईपीडीबी के साथ एक पाइथन लिपि डिबग करते समय मैंने यह मुद्दा तय किया था। यह '*** UnicodeEncodeError लौटा रहा था: 'ascii' कोडेक स्थिति 314 में वर्ण '\ u22f1' को एन्कोड नहीं कर सकता है: प्रत्येक बार जब मैं एक चर मुद्रित करने की कोशिश करता हूं तो क्रमशः श्रेणी में नहीं (12)। मैंने 'LANG = en_US.UTF-8' सेट करने का प्रयास किया, लेकिन केवल 'LANG = C.UTF-8' निर्यात करने के लिए सेट किया जो यह काम करता था। – Yamaneko

संबंधित मुद्दे