2009-05-04 9 views
10

थोड़ा सा शोध करने के बाद लोगों ने खिताब को कैसे कम किया है, मैंने देखा है कि अक्सर गैर-अंग्रेज़ी खिताब से निपटने के तरीके को याद किया जाता है।स्लग्स और यूनिकोड के लिए नियम

यूआरएल एन्कोडिंग बहुत ही सीमित है। http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

देखें तो, उदाहरण के लिए कैसे लोगों

जैसी चीजों के लिए शीर्षक मल के लिए से निपटने के है "Una Lagrima कायो एन ला अखाड़ा"

एक भारत यूरोपीय भाषाओं के लिए एक उचित तालिका के साथ आ सकते हैं, अर्थात। चीजें जिन्हें आईएसओ -885 9 -1 के माध्यम से एन्कोड किया जा सकता है। उदाहरण के लिए, एक रूपांतरण सारणी 'ए' => 'एक' है, तो स्लग होगा

यूनिकोड

"ऊना-lagrima-कायो-en-la-क्षेत्र"

हालांकि, मैं उपयोग कर रहा हूँ अनुवाद होगा (विशेष रूप से यूटीएफ -8 एन्कोडिंग का उपयोग करके), इसलिए मुझे किस तरह के कोड पॉइंट प्राप्त करने जा रहे हैं, इस बारे में कोई गारंटी नहीं है (मुझे उन चीज़ों के लिए तैयार करना है जो आईएसओ -885 9 -1 एन्कोडेड नहीं हो सकते हैं।

मैं एक नुस्खे इस से निपटने के लिए कैसे? क्या मुझे ISO_8859-1 रेंज (< 255) में वर्णों के लिए रूपांतरण तालिका के साथ आना चाहिए और बाकी सब कुछ छोड़ना चाहिए?

संपादित करें: थोड़ा और संदर्भ देने के लिए, एक प्राथमिकता, मैं वास्तव में गैर-यूरोपीय यूरोपीय भाषाओं में डेटा को कम करने की उम्मीद नहीं करता हूं, लेकिन अगर मुझे ऐसा डेटा मिलता है तो मैं एक योजना बनाना चाहता हूं। विस्तारित ASCII के लिए एक रूपांतरण तालिका अच्छा होगा। कोई संकेतक?

इसके अतिरिक्त, क्योंकि लोग कह रहे हैं, मैं अजगर उपयोग कर रहा हूँ,

+0

वैसे, क्या यूआरएल में यूनिकोड की अनुमति क्यों नहीं है इसके लिए कोई अच्छा कारण है? – Zifre

उत्तर

8

लगभग पूर्ण लिप्यंतरण तालिका (लैटिन, ग्रीक और सिरिलिक वर्ण सेट के लिए) slughifi library में मिल सकती है। यह Django की तरफ तैयार है, लेकिन सामान्य जरूरतों को पूरा करने के लिए आसानी से संशोधित किया जा सकता है (मैं इसे एपइंजिन पर वर्कज़ुग-आधारित ऐप के साथ उपयोग करता हूं)।

+0

धन्यवाद zgoda, मेरी स्थिति (पायथन, ऐप इंजन) में, यह गोमांस ऊपर slugify करेगा काम। – bustrofedon

+0

slughifi.py के शीर्ष पर '# - * - कोडिंग: utf-8 - * -' जोड़ना सुनिश्चित करें –

1

यदि सब और विफल रहता है गूगल एप इंजन पर चल रहा है, तो आप एक रूपांतरण सारणी इस्तेमाल कर सकते हैं, लेकिन वहाँ एक बेहतर प्रदर्शन समाधान उपलब्ध हो सकता है। आप किस सर्वर साइड भाषा का उपयोग कर रहे हैं?

+0

मैं अजगर का उपयोग कर रहा हूं (साइट Google ऐप इंजन में चल रही है) – bustrofedon

2

आम तौर पर यह उस भाषा पर निर्भर करेगा जिसकी आप अपेक्षा करते हैं। यदि आपका प्राथमिक उपयोगकर्ताबेस जापानी है, तो सब कुछ छोड़कर आईएसओ -885 9 -1 अक्षरों को अच्छी तरह से जाने की संभावना नहीं है।

यह कहा गया है कि, यदि आपका चरित्र सेट रूपांतरण लाइब्रेरी इसका समर्थन करता है तो एक विकल्प लिप्यंतरण मोड का उपयोग करना हो सकता है। उदाहरण के लिए, जीएनयू iconv साथ, एक कर सकते हैं:

] echo Una lágrima cayó en la arena|iconv -f utf8 -t ascii//TRANSLIT 
Una lagrima cayo en la arena 

आप देख सकते हैं, उच्चारण चिह्न वर्ण स्वचालित रूप से ASCII रेंज में कुछ करने के लिए बदल रहे थे। कोड में इसका अनुवाद कैसे करें, निश्चित रूप से आप जिस भाषा का उपयोग कर रहे हैं उस पर निर्भर करते हैं, लेकिन यदि आपकी भाषा जीआरयू आइकनव पर आधारित है, तो चार्सेट रूपांतरण के लिए (और यदि यह लिनक्स पर है, तो शायद यह है), यह चाल शायद सीधे लागू हो सकती है कन्वर्ट-टू-कैरेक्टर सेट के रूप में बस "ascii // TRANSLIT" निर्दिष्ट करें।

इस बात को ध्यान में रखना एक बात है, हालांकि, यह केवल उन पात्रों के साथ प्रभावी है जो ASCII में कुछ दिखते हैं। उदाहरण के लिए:

] echo 我輩は猫である。名前はまだない。|iconv -f utf8 -t ascii//TRANSLIT            
???????????????? 

आप देख सकते हैं, यह जापानी के लिए ज्यादा मदद नहीं है, और बाद में आगे की प्रक्रिया की जरूरत है वर्ण URL के लिए उपयुक्त नहीं हटाने के लिए।

+0

धन्यवाद, मुझे आइकनिव की "लिप्यंतरण" करने की क्षमता के बारे में पता नहीं था। हालांकि, वेब अनुप्रयोगों के संदर्भ में, iconv उपयुक्त नहीं है। अकेले तथ्य यह है कि साइट Google ऐप इंजन पर चल रही है। – bustrofedon

4

मैं यूआरएल पथ के लिए बस utf-8 का उपयोग करता हूं। जब तक डोमेन गैर-आईडीएन एफएफ 3 है, आईई इसके साथ ठीक काम करता है। Google उन्हें सही ढंग से पढ़ता है और प्रदर्शित करता है। IRI RFC यूनिकोड की अनुमति देता है। बस सुनिश्चित करें कि आप आने वाले यूआरएल को सही तरीके से पार्स करते हैं।

+0

यकीन है, लेकिन यूनिकोड वर्णों के लिए आप RegEx कैसे करते हैं? [- \ w] ** lágrima-cayó-en-la-arena ** –

+0

से मेल नहीं खाएगा मैं .NET का उपयोग करता हूं और यह RegEx में यूनिकोड का समर्थन करता है। जावास्क्रिप्ट के लिए jquery.validate और http://www.ibm.com/developerworks/web/library/wa-uri/index.html – felixg

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