2012-02-21 18 views
13
$string = iconv("UTF-8", "UTF-8//IGNORE", $string); 

पैदा करता है मुझे लगा कि यह कोड अमान्य UTF-8 वर्णों को दूर होगा, लेकिन यह [E_NOTICE] "iconv(): Detected an illegal character in input string" पैदा करता है। मुझे क्या याद आ रहा है, मैं अवैध पात्रों से एक स्ट्रिंग को सही ढंग से कैसे हटा सकता हूं?iconv UTF-8 // अभी भी ध्यान न दें "अवैध चरित्र" त्रुटि

उत्तर

5

आउटपुट कैरेक्टर सेट (दूसरा पैरामीटर) इनपुट कैरेक्टर सेट (पहला पैरा) से अलग होना चाहिए। यदि वे समान हैं, तो यदि स्ट्रिंग में अवैध यूटीएफ -8 वर्ण हैं, तो iconv इनपुट चरित्र सेट के अनुसार उन्हें अवैध मानते हैं।

+0

आप एक समाधान प्रस्तावित करते हैं? मैंने वास्तव में [पढ़ा है] (http://blog.liip.ch/archive/2005/01/24/how-to-get-rid-of-invalid-utf-8-characters.html) [वह] (http://www.php.net/manual/en/function.iconv.php#78972) यह – Znarkus

+0

काम करना चाहिए हां, मैंने यह लिंक देखा है, लेकिन इस पर एक नज़र डालें https://github.com/EllisLab/CodeIgniter/मुद्दों/261। मेरी समझ यह है कि iconv अब इनपुट एन्कोडिंग नहीं करता है - लेकिन मैं गलत हो सकता था। ऊपर दिए गए लिंक में वैकल्पिक समाधान का एक लिंक भी है, जो https://gist.github.com/1262496 पर है। –

+1

यह समझ में आता है। मैं पहले 'mb_convert_encoding ($ string, "UTF-8", "UTF-8") का प्रयास करूंगा, और यदि यह काम नहीं करता है तो मैं गस्ट आज़माउंगा। धन्यवाद! – Znarkus

-1

बस नोटिस की अनदेखी करने के लिए, आप उपयोग कर सकते हैं "@":

$string = @iconv("UTF-8", "UTF-8//IGNORE", $string);

+4

यह स्ट्रिंग – SztupY

+0

के साथ समस्या का समाधान नहीं करता है तो स्ट्रिंग वापस खाली है – clod986

+0

आपको ऐसा नहीं करना चाहिए, क्योंकि कुछ मामलों में आप खाली स्ट्रिंग प्राप्त कर सकते हैं। – champion