दिलचस्प पोस्ट
जावास्क्रिप्ट के भीतर एक एसवीजी पाठ को कैसे लटकाया जाए? पृष्ठ के निचले भाग में पाद लेख (div) कैसे संरेखित करें? जावा के थ्रेड.sleep () में जावास्क्रिप्ट के बराबर क्या है? जावास्क्रिप्ट में कहा जाता है इस अभ्यास क्या है? गिट में सबसे बदली हुई फाइलों को ढूंढना कोड का उपयोग करने के लिए ImageView का मार्जिन कैसे सेट करें, xml नहीं पॉ ऑपरेटर के साथ गणना त्रुटि क्या कोई लंगड़ा सी ++ ड्रैपर / सरलीफायर है (लिनक्स मैक और विन से शुद्ध कोड पर काम करना)? EditText के त्रुटि संदेश की पृष्ठभूमि बदलें शास्त्रीय पर प्रोटोटाइप विरासत के लाभ? स्क्रिप्ट घटक के अंदर ssis पैकेज चर को कैसे उपयोग करें Comparator.reversed () लैम्ब्डा का उपयोग संकलन नहीं करता है डिफ़ॉल्ट जेनकीन्स पासवर्ड क्या है? सामने विंडो को सामने लाएं WPF में रूबी स्ट्रिंग को विभाजित करते समय मैं सीमांकक कैसे रखूं?

PHP फाइलों में यूटीएफ -8 बीओएम हस्ताक्षर

मैं कुछ टिप्पणी की थी PHP वर्गों और मैं एक समस्या पर ठोकर खाई। मेरा नाम (@ एथेंट टैग के लिए) एक सिम के साथ समाप्त होता है (जो एक यूटीएफ -8 का चरित्र है, … और एक अजीब नाम, मुझे पता है)।

हालांकि मैं फ़ाइल को यूटीएफ -8 के रूप में सहेजता हूं, कुछ मित्रों ने बताया कि वे देखते हैं कि चरित्र पूरी तरह गड़बड़ ( È™ )। यह समस्या बीओएम हस्ताक्षर जोड़कर दूर हो जाती है। लेकिन यह बात मुझे थोड़ी परेशान करती है, क्योंकि मुझे इसके बारे में बहुत कुछ नहीं पता है, सिवाय इसके कि मैंने विकिपीडिया पर जो कुछ देखा है, और यहां पर कुछ इसी तरह के प्रश्नों पर है।

मुझे पता है कि यह फ़ाइल की शुरुआत में कुछ चीजें जोड़ती है, और जो मैंने समझा है कि यह वह बुरी नहीं है, लेकिन मुझे चिंतित है क्योंकि केवल समस्याग्रस्त परिस्थितियों में मैंने PHP फाइलों के बारे में पढ़ा है। और जब से मैं उन्हें साझा करने के लिए PHP कक्षाएं लिख रहा हूं, तो 100% संगत होना टिप्पणी में अपना नाम रखने से ज्यादा महत्वपूर्ण है।

लेकिन मैं निहितार्थ समझने की कोशिश कर रहा हूं, क्या मुझे चिंता किए बिना इसका उपयोग करना चाहिए? या क्या ऐसे मामलों में जब नुकसान हो सकता है? कब?

Solutions Collecting From Web of "PHP फाइलों में यूटीएफ -8 बीओएम हस्ताक्षर"

दरअसल, बीओएम वास्तविक डेटा ब्राउज़र को भेजी जाती है। ब्राउज़र खुशी से इसे अनदेखा करेगा, लेकिन फिर भी आप हेडर नहीं भेज सकते हैं।

मेरा मानना ​​है कि समस्या वास्तव में आपके और आपके दोस्त की संपादक सेटिंग्स है एक BOM के बिना, आपके मित्र का संपादक फ़ाइल को स्वतः यूटीएफ -8 के रूप में पहचान नहीं सकता है। वह अपने संपादक को स्थापित करने का प्रयास कर सकता है कि संपादक को उम्मीद है कि फाइल को यूटीएफ -8 (यदि आप असली आईडीई जैसे नेटबीन्स का इस्तेमाल करते हैं, तो यह एक ऐसी परियोजना की सेटिंग भी हो सकती है जिसे आप कोड के साथ स्थानांतरित कर सकते हैं) ।

एक विकल्प कुछ चाल का प्रयास करना है: कुछ संपादकों ने प्रवेश किए गए पाठ के आधार पर कुछ ह्यूरिस्टिक्स का उपयोग करके एन्कोडिंग निर्धारित करने का प्रयास किया है। आप प्रत्येक फाइल को आरंभ करने का प्रयास कर सकते हैं

 <?php //Úτƒ-8 encoded 

और शायद अनुमानी इसे प्राप्त करेगा। वहाँ शायद वहाँ डाल करने के लिए बेहतर सामान है, और आप या तो एन्कोडिंग पता लगाने के heuristics किस प्रकार के सामान्य हैं, या बस कुछ बाहर की कोशिश कर सकते हैं 🙂

सब कुछ, मैं सिर्फ संपादक सेटिंग्स फिक्सिंग की सिफारिश

ओह रुको, मैं आखिरी भाग को भूल गया: कोड को कहीं भी फैलाने के लिए, मुझे लगता है कि आप सभी फाइलों को बनाने में केवल 7 बिट वर्णों को ही बनाते हैं, अर्थात सादे एएससीआईआई, या सिर्फ यह स्वीकार करते हैं कि प्राचीन संपादकों के साथ कुछ लोग देखते हैं आपका नाम मज़ेदार लिखा हुआ है कोई असफल-सुरक्षित तरीका नहीं है बोम निश्चित रूप से खराब है क्योंकि हेडर पहले ही भेजे गए हैं दूसरी तरफ, जब तक आप टिप्पणी में यूटीएफ -8 अक्षर डालते हैं, तब तक कुछ एन्कोडिंग के किसी भी संपादक की गलतफहमी में अजीब अक्षर होते हैं। मैं सही ढंग से अपने नाम की वर्तनी और heuristics पर लक्षित एक टिप्पणी को जोड़ने के लिए जाना था, ताकि ज्यादातर संपादकों को यह मिलेगा, लेकिन हमेशा ऐसे लोग होंगे जो इसके बजाय बोगस वर्ण देखेंगे।

BOM कारण Headers already sent त्रुटि Headers already sent , इसलिए, आप PHP फाइलों में BOM का उपयोग नहीं कर सकते

यह एक पुरानी पोस्ट है और पहले ही इसका उत्तर दिया जा चुका है, लेकिन मैं आपको कुछ अन्य संसाधनों को छोड़ सकता हूं, जब मुझे इस बीओएम मुद्दे से सामना करना पड़ा।

इस पृष्ठ के साथ http://people.w3.org/rishida/utils/bomtester/index.php आप देख सकते हैं कि क्या एक विशिष्ट फाइल में BOM है।

एक आसान स्क्रिप्ट भी है जो आपके वर्तमान निर्देशिका में BOM के साथ सभी फाइलों को आउटपुट करती है।

 <?php function fopen_utf8 ($filename) { $file = @fopen($filename, "r"); $bom = fread($file, 3); if ($bom != b"\xEF\xBB\xBF") { return false; } else { return true; } } function file_array($path, $exclude = ".|..|design", $recursive = true) { $path = rtrim($path, "/") . "/"; $folder_handle = opendir($path); $exclude_array = explode("|", $exclude); $result = array(); while(false !== ($filename = readdir($folder_handle))) { if(!in_array(strtolower($filename), $exclude_array)) { if(is_dir($path . $filename . "/")) { // Need to include full "path" or it's an infinite loop if($recursive) $result[] = file_array($path . $filename . "/", $exclude, true); } else { if ( fopen_utf8($path . $filename) ) { //$result[] = $filename; echo ($path . $filename . "<br>"); } } } } return $result; } $files = file_array("."); ?> 

मैंने उस कोड को php.net पर पाया

Dreamweaver इसके साथ भी मदद करता है, यह आपको फ़ाइल को सहेजने का विकल्प देता है और इसमें BOM सामान शामिल नहीं है

इसका उत्तर देर से है, लेकिन मैं अभी भी आशा करता हूं कि यह मदद करता है। अलविदा

बस आप जानते हैं, php, zend.multibyte में एक विकल्प है, जो कि zend.multibyte Headers already sent त्रुटि Headers already sent बिना zend.multibyte फाइलें पढ़ने के लिए अनुमति देता है।

Php.ini फ़ाइल से:

 ; If enabled, scripts may be written in encodings that are incompatible with ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such ; encodings. To use this feature, mbstring extension must be enabled. ; Default: Off ;zend.multibyte = Off 

PHP में, "हेडर पहले से ही भेजी गई" त्रुटि के अलावा, एक बीओएम की उपस्थिति ब्राउज़र में एचटीएमएल को और अधिक सूक्ष्म तरीके से पेंच सकती है

इस समस्या को एक रूपरेखा के लिए देखें।

जब ऐसा होता है, तो आमतौर पर केवल गाया पृष्ठ के ऊपर एक ध्यान देने योग्य स्थान नहीं होता है, लेकिन अगर आप फ़ायरफ़ॉक्स या क्रोम में एचटीएमएल का निरीक्षण करते हैं, तो आप देख सकते हैं कि सिर का भाग खाली है और उसके तत्व शरीर में दिखाई देते हैं। बेशक देखने के स्रोत वह सब कुछ दिखाएगा जहां यह होना चाहिए, लेकिन ब्राउज़र किसी तरह इसे गलत तरीके से व्याख्या कर रहा है।

या आप php.ini में आउटपुट बफ़रिंग को सक्रिय कर सकते हैं जो "हेडर पहले से भेजे गए" समस्या को हल करेंगे I प्रदर्शन के लिए आउटपुट बफ़रिंग का उपयोग करना बहुत महत्वपूर्ण है यदि आपकी साइट में महत्वपूर्ण लोड है

वास्तव में एक यूटीएफ -8 फ़ाइल की पहचान करने का सबसे प्रभावी तरीका है, और दोनों आधुनिक ब्राउज़रों और मानकों का समर्थन करते हैं और इसका उपयोग HTTP प्रतिसाद निकायों में करते हैं।

पीएचपी के मामले में फ़ाइल नहीं है, लेकिन फाइल के जरिए उत्पन्न उत्पन्न उत्पादन जो प्रतिक्रिया के रूप में भेजा जाता है, जाहिर है कि शुरुआत में बीओएम के साथ सभी PHP फाइलों को सहेजने का कोई अच्छा विचार नहीं है, लेकिन इसका मतलब यह नहीं है कि आपको बीओएम का इस्तेमाल नहीं करना चाहिए आपके जवाब में

आप वास्तव में अपने कूटप्रद घोषणापत्र के ठीक पहले निम्नलिखित कोड को सुरक्षित रूप से इंजेक्ट कर सकते हैं (यदि आप प्रतिक्रिया के रूप में HTML पैदा कर रहे हैं):

<?="\xEF\xBB\xBF"?>

और पढ़ें: https://www.w3.org/International/questions/qa-byte-order-mark#transcoding