2015-02-12 5 views
6

हाय दोस्तों। मुझे हमेशा iconv के साथ समस्याएं थीं। अब मैं Windows-1250 के लिए स्ट्रिंग परिवर्तित करना होगा और यह काम करने लगता है नहीं करता है: उत्पादन ऊपरphp - iconv यूटीएफ -8 से विंडोज -1250 में कनवर्ट नहीं करता

$string = "ľaľa ho papľuha, ogrcal mi krpce!"; 
echo $string . ' (' . mb_detect_encoding($string) . ') <br>'; 
$string_encoded = iconv(mb_detect_encoding($string), 'Windows-1250//TRANSLIT', $string); 
echo $string_encoded . ' (' . mb_detect_encoding($string_encoded) . ') <br>'; 
$string_encoded = mb_convert_encoding($string, 'Windows-1250'); 
echo $string_encoded . ' (' . mb_detect_encoding($string_encoded) . ') <br>'; 

तीन इको वास्तव में इस:

ľaľa ho papľuha, ogrcal mi krpce! (UTF-8) 
�a�a ho pap�uha, ogrcal mi krpce! () 
mb_convert_encoding() Unknown encoding &quot;Windows-1250&quot; (ASCII) 

के बाद से मैं हमेशा इस हीरे प्रश्न चिह्न देखा है मुझे आश्चर्य है कि यह PHP कार्य बिल्कुल काम करता है या नहीं। मैं यूटीएफ -8 को विंडोज -1250 में कैसे परिवर्तित कर सकता हूं?

  • फ़ाइल ++ नोटपैड में बचा लिया गया था UTF-8
  • इसके अलावा, मैं कोशिश की है शीर्षक में ('सामग्री प्रकार: text/html; charset = विंडोज़ -1250'); और setLocale()

उत्तर

3

चरित्र एक संकेत है कि आपके पाठ को यूटीएफ -8 के रूप में व्याख्या किया जा रहा है, लेकिन इस बिंदु पर एक अवैध बाइट अनुक्रम का सामना करना पड़ा। मतलब, आप यूटीएफ -8 की सेवा नहीं कर रहे हैं, फिर भी ग्राहक इसे यूटीएफ -8 के रूप में पढ़ रहा है। जो दर्शाता है कि iconv बस ठीक काम कर रहा है और जो भी परिणाम पढ़ रहा है उसे सिर्फ यह संदेश नहीं मिला कि इसे विंडोज -1250 के रूप में व्याख्या करना चाहिए।

What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text और Handling Unicode Front To Back In A Web App देखें।

+1

हाँ तुम सही थे। एन्कोडिंग को विंडोज -1250 के रूप में भेजा गया था लेकिन ब्राउजर ने इसे सही नहीं दिखाया –

1

पुराने पोस्ट है, लेकिन आप विंडोज़ -1252 के लिए UTF-8 में बदल सकते हैं और आप एक ही प्रभाव होगा:

$str = "ľaľa ho papľuha, ogrcal mi krpce!" 
$str = mb_convert_encoding($str, "Windows-1252", "UTF-8"); 

लेकिन आप THIS SOLUTION का उपयोग करें और अपनी जरूरत के लिए अनुकूलित कर सकते हैं अगर तुम सच में Windows-1250 की जरूरत है।

0

मुझे एक समान समस्या का अनुभव हुआ है। सीएसवी फ़ाइल पढ़ने के दौरान, शब्द "Česká republika" को "Èeská republika" के रूप में पढ़ा गया था।

यह मेरे लिए इसे हल:

iconv("Windows-1250", "UTF-8", ($string)); 
संबंधित मुद्दे