नए सिरे से लिखना मैं वर्तमान में एक आवेदन है कि बर्फ के तूफान समुदाय एपीआई से JSON डेटा खींचती है और पीएचपी साथ यह पार्स करता है पर काम कर रहा हूँ। सब कुछ ठीक काम करता है जब तक कि मैं उनके नाम पर एक विशेष चरित्र वाले चरित्र में नहीं आ जाता।विशेष वर्ण और यूआरएल
आदेश वर्ण डेटा मैं उनके पात्रों नाम और दायरे है कि वे कर रहे हैं पता करने की जरूरत को खींचने के लिए है।
मैं नाम और दायरे चरित्र पेज के URL से पारित किया जा रहा है, और वहाँ है कि जानकारी का उपयोग चरित्र डेटा खींचने के लिए से की है। अगर मैं, क्योंकि यह एक मान्य नहीं है एक लहजे मैं हो मेरी त्रुटि पृष्ठ पर री-डायरेक्ट के साथ एक चरित्र के लिए डेटा खींचने की कोशिश इस बिंदु पर
http://localhost/guildtree/characters.php?realm=argent-dawn&name=Ankzu
:
इस बिंदु पर अपने URL इसलिए की तरह हैं चरित्र।
यह जब तक मैं यूआरएल को फिर से लिखने कि मैं मेरी समस्या की खोज की शुरू नहीं किया गया था। मुझे अपने त्रुटि पृष्ठ पर फिर से निर्देशित किया जा रहा है क्योंकि रेखा के साथ कहीं कुछ विशेष पात्रों को वास्तव में कुछ भयानक पात्रों के लिए प्रतिस्थापित किया जा रहा है।
मेरी नई फिर से लिखा URL की सहायता सेपालन काम करता है:
http://localhost/guildtree/argent-dawn/ankzu
हालांकि, एक त्रुटि संदेश में उनके नाम परिणामों में विशेष वर्ण के साथ एक चरित्र।
निम्न त्रुटि संदेश मेंhttp://localhost/guildtree/argent-dawn/notúk
परिणाम:
"। नहीं मिला
अनुरोधित URL/guildtree/रजत-भोर/notúk इस सर्वर पर नहीं मिला था"
यह मेरी समझ है कि कारण है कि ú ú के रूप में दिखाई दे रहा है के रूप में आप देख सकते हैं ú ú के लिए प्रतिस्थापित किया जा रहा है, लेकिन जब मैं URL कॉपी करके पेस्ट ú% C3% बीए के रूप में प्रकट ऐसा इसलिए है क्योंकि दो बाइट यूनिकोड ú को दो बाइट ASCII वर्णों में घुमाया जा रहा है जिसके परिणामस्वरूप ú प्रदर्शित किया जा रहा है।
मैं सुनिश्चित किया है कि मेरे सभी पृष्ठों शीर्षक में निम्नलिखित है:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
अपने आवेदन ठीक से काम करने मैं ठीक से प्रदर्शित करने के लिए उन विशेष वर्ण की जरूरत है, तो मैं यू की जरूरत वास्तव में प्रदर्शित करने के लिए आदेश में
के रूप में, ú के रूप में दिखाई नहीं दे रहा है, लेकिन वास्तव में º या% सी 3% बीए हो।
पात्रों नाम URL से खींचा जा रहा है बस के रूप में:
$charName = $_GET['name'];
यह $ charName ठीक से विशेष वर्ण प्रदर्शित करने के लिए सांकेतिक शब्दों में बदलना संभव है?
मैं सब कुछ मैं के बारे में सोच सकते हैं की कोशिश की है और गूगल पर खोज की है लेकिन कुछ भी काम किया है।
इसके अलावा, क्योंकि मैं यूआरएल को फिर से लिखने का उपयोग कर रहा क्या पुनर्लेखन नियम इन विशेष वर्णों के लिए अनुमति देने के लिए हो सकता है?
यहाँ मेरे वर्तमान पुनर्लेखन नियम है:
RewriteRule ^([a-zA-Z0-9_'-]+)/([a-zA-Z]+)$ characters.php?realm=$1&name=$2 [NC]
मुझे पता है कि ([a-zA-Z] +) सब पर विशेष वर्णों के लिए अनुमति नहीं है हूँ, मैं वर्तमान में हो रही पर काम कर रहा है ठीक से प्रदर्शित करने के लिए विशेष पात्र। अगर मैं ([ए-जेए-जेड \ º] +) का उपयोग करता हूं तो यह पृष्ठ को प्रदर्शित और प्रदर्शित करेगा क्योंकि इसे प्रदर्शित करने की आवश्यकता है। नियम में \ ú जोड़ना ऐसा करने के लिए एक बहुत ही खराब तरीका लगता है और उच्चारण अक्षरों के लिए संबंधित चरित्र का उपयोग करते समय हमेशा काम नहीं करता है।
किसी भी मदद की सराहना की जाएगी। अगर आपको कोई और जानकारी चाहिए तो कृपया पूछें।
संपादित करें:
नीचे करने के लिए अपने पुनर्लेखन नियम बदलने की अनुमति देता है के लिए जानकारी ठीक खींचा जा करने के लिए, लेकिन मेरे सीएसएस के लिए एक रीडायरेक्ट लूप पैदा करता है। कुछ सरल परीक्षण के माध्यम से
:
RewriteRule ^([a-zA-Z0-9_'-]+)/([^/]+)$ characters.php?realm=$1&name=$2 [NC]
उदाहरण के लिए मेरी सीएसएस
http://localhost/guildtree/css/error
बजाय
http://localhost/guildtree/css/style2.css
अद्यतन पर पुनः निर्देशित किया जा रहा है
$charName = $_GET['name'];
$charNameTEST = utf8_encode($charName);
परिवर्तन करना होगा, लेकिन जब मैं अपने पृष्ठ के लिए इस पर लागू यह अभी भी कह रही है ऊपर आता है:
"नहीं मिला
अनुरोध यूआरएल/guildtree/रजत-भोर/notúk इस सर्वर पर नहीं मिला था । "
मुझे लगता है कि अब मुख्य मुद्दा यूआरएल रीडायरेक्टिंग के साथ है, क्योंकि जेएसओएन डेटा को उच्चारण किए गए वर्ण होने पर पूरी तरह ठीक से पार्स किया जा सकता है। मुझे समझ में नहीं आता कि यह मुझे क्यों दिखाता है कि यह ब्राउज़र बार में गिल्डट्री/अर्जेंट-डॉन/नोटक पर है, लेकिन खींचने/गिल्डट्री/अर्जेंट-डॉन/नोटएक करने की कोशिश करता रहता है।
जब कोई व्यक्ति सीधे यूआरएल में प्रवेश करता है तो क्या होगा? – akari
आप उपयोगकर्ता नाम ASCIIfying पर भी विचार करना चाहेंगे। 'example.com/guildtree/argent-dawn/notuk /' example.com/guildtree/argent-dawn /%% C3% BAK के बजाय ''। आपके उपयोगकर्ताओं को शायद यह आसान लगेगा। –
example.com/guildtree/argent-dawn/notuk और example.com/guildtree/argent-dawn/notúk डेटा के दो पूरी तरह से अलग सेट खींचेंगे हालांकि, चरित्र का नाम सटीक होना चाहिए। – akari