php iconv() 編碼轉(zhuǎn)換出錯 Detected an illegal character
May 25, 2016 pm 04:53 PM原型:string iconv ( string $in_charset , string $out_charset , string $str )
特別是第二個參數(shù)說明:the output charset.
用iconv()轉(zhuǎn)換一個輸出字符編碼不支持的字符時,如iconv('utf-8', 'gb2312', 'www.phprm.com'),會遇到這樣的錯誤提示:notice: iconv() [function.iconv]: detected an illegal character in input string ...
因為gb2312表示的是簡體中文,不支持像"www.phprm.com"之類的更為復(fù)雜的漢字以及一些特殊字符,這當然會報錯了,解決辦法有兩種:
1. 擴大輸出字符編碼的范圍,如iconv('utf-8', 'gbk', 'www.phprm.com'),則可以正確地輸出,因為gbk支持的字符范圍更廣;
2. 在輸出的字符編碼字符串后面加上"http://ignore",如iconv('utf-8', 'gb2312//ignore', 'www.phprm.com'),這樣做其實是忽略了不能轉(zhuǎn)換的字符,避免了出錯但卻不能夠正確地輸出(即空白不、輸出)。
下面來看看關(guān)于php教程 iconv() : detected an illegal character in input string處理方法:
$str = iconv('utf-8', 'gbk//ignore', unescape(isset($_get['str'])? $_get['str']:''));
本地測試//ignore能忽略掉它不認識的字接著往下轉(zhuǎn),并且不報錯,而//translit是截掉它不認識的字及其后面的內(nèi)容,并且報錯。//ignore是我需要的。
在網(wǎng)上找到下面這篇文章,發(fā)現(xiàn)mb_convert_encoding也可以,但效率比iconv差,轉(zhuǎn)換字符串編碼iconv與mb_convert_encoding的區(qū)別:
iconv — convert string to requested character encoding(php 4 >= 4.0.5, php 5)
mb_convert_encoding — convert character encoding(php 4 >= 4.0.6, php 5)
用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先啟用 mbstring 擴展庫,在 php.ini里將; extension=php_mbstring.dll 前面的 ; 去掉
string iconv ( string in_charset, string out_charset, string str )
注意:第二個參數(shù),除了可以指定要轉(zhuǎn)化到的編碼以外,還可以增加兩個后綴://translit 和 //ignore,其中://translit 會自動將不能直接轉(zhuǎn)化的字符變成一個或多個近似的字符,//ignore 會忽略掉不能轉(zhuǎn)化的字符,而默認效果是從第一個非法字符截斷。
returns the converted string or false on failure.
使用:
1. 發(fā)現(xiàn)iconv在轉(zhuǎn)換字符"-"到gb2312時會出錯,如果沒有ignore參數(shù),所有該字符后面的字符串都無法被保存。不管怎么樣,這個"-"都無法轉(zhuǎn)換成功,無法輸出。另外mb_convert_encoding沒有這個bug.
2. mb_convert_encoding 可以指定多種輸入編碼,它會根據(jù)內(nèi)容自動識別,但是執(zhí)行效率比iconv差太多;如:$str = mb_convert_encoding($str,"euc-jp","ascii,jis,euc-jp,sjis,utf- 8");“ascii,jis,euc-jp,sjis,utf-8”的順序不同效果也有差異
3. 一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉(zhuǎn)化后無法正常顯示時才用mb_convert_encoding 函數(shù)
from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. if it is not specified, the internal encoding will be used.
$str = mb_convert_encoding($str, "ucs-2le", "jis, eucjp-win, sjis-win"); $str = mb_convert_encoding($str, "euc-jp', "auto");
本文鏈接:
收藏隨意^^請保留教程地址.

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie die Funktion Character.isDefined() von Java, um festzustellen, ob ein Zeichen ein definiertes Zeichen ist. Bei der Java-Programmierung müssen Sie manchmal feststellen, ob ein Zeichen ein definiertes Zeichen ist. Der Einfachheit halber stellt Java die Funktion isDefined() der Character-Klasse bereit, mit deren Hilfe wir schnell feststellen k?nnen, ob ein Zeichen ein definiertes Zeichen ist. In diesem Artikel wird die Verwendung dieser Funktion erl?utert und einige Codebeispiele bereitgestellt. Die Zeichenklasse repr?sentiert ein einzelnes Zeichen in Java

Bei der Textverarbeitung ist es h?ufig erforderlich, Zeichenfolgen in verschiedene Kodierungsformate zu konvertieren. Die in der PHP-Sprache bereitgestellte Funktion iconv (InternationalizationConversion) kann diesen Bedarf sehr bequem erfüllen. In diesem Artikel wird die Verwendung der Funktion ?iconv“ im Detail unter folgenden Aspekten vorgestellt: Definition der Funktion ?iconv“ und Einführung in allgemeine Parameter. Beispieldemonstration: GBK-codierte Zeichenfolge in UTF-8-codierte Zeichenfolge konvertieren. Beispieldemonstration: UTF konvertieren

Interpretation der Java-Dokumentation: Detaillierte Erl?uterung der Methode isAlphabetic() der Klasse Character 1. übersicht In der Klasse Java Character wird die Methode isAlphabetic() verwendet, um zu bestimmen, ob ein bestimmtes Zeichen ein alphabetisches Zeichen ist. Es wird ein boolescher Wert zurückgegeben, wobei ?true“ angibt, dass das angegebene Zeichen ein alphabetisches Zeichen ist, und ?false“ angibt, dass das angegebene Zeichen kein alphabetisches Zeichen ist. Dieser Artikel bietet eine detaillierte Analyse der Verwendung und des Prinzips dieser Methode und stellt Codebeispiele bereit, um den Lesern ein besseres Verst?ndnis zu erleichtern

Java verwendet die Funktion isLetterOrDigit() der Character-Klasse, um zu bestimmen, ob ein Zeichen ein Buchstabe oder eine Zahl ist. Bei der Java-Programmierung müssen wir h?ufig einige Operationen und Beurteilungen an Zeichen durchführen. Eine der h?ufigsten Anforderungen besteht darin, festzustellen, ob ein Zeichen ein Buchstabe oder eine Zahl ist. Java stellt die Funktion isLetterOrDigit() der Character-Klasse bereit, um uns bei der Implementierung dieser Funktion zu helfen. Die Character-Klasse ist eine Wrapper-Klasse, die zum Bedienen und Beurteilen von Charakteren verwendet wird.

iconv-fencoding[-tencoding][Eingabedatei]...[Funktion] Konvertiert den Inhalt einer bestimmten Datei von einer Kodierung in eine andere. [Beschreibung]-fencoding: Konvertieren Sie Zeichen von Codierung in Codierung. -tencoding: Zeichen in Kodierung umwandeln. -l: Den bekannten Satz codierter Zeichen auflisten -ofile: Ausgabedatei angeben -c: Unzul?ssige Zeichen in der Ausgabe ignorieren -s: Warnmeldungen, aber keine Fehlermeldungen unterdrücken --verbose: Fortschrittsinformationen anzeigen -f und -t k?nnen Die angegebenen zul?ssigen Zeichen werden im Befehl mit der Option -l aufgelistet. [Beispiel]* Derzeit unterstützte Zeichenkodierungen auflisten

Verwenden Sie die Methode isUpperCase() der Character-Klasse in Java, um zu bestimmen, ob ein Zeichen ein Gro?buchstabe ist. In der Programmiersprache Java müssen wir h?ufig feststellen, ob ein Zeichen ein Gro?buchstabe ist. Um diese Funktion zu realisieren, stellt Java die Klasse Character bereit, deren Methode isUpperCase() ermitteln kann, ob ein Zeichen ein Gro?buchstabe ist. In diesem Artikel wird die Verwendung dieser Methode und des Beispielcodes vorgestellt. Verwenden Sie isUpperCase() der Character-Klasse

Verwenden Sie die Funktion Character.isLetterOrDigit() von Java, um zu bestimmen, ob ein Zeichen ein Buchstabe oder eine Zahl ist. In Java müssen wir h?ufig feststellen, ob ein Zeichen ein Buchstabe oder eine Zahl ist. Um diesen Prozess zu vereinfachen, bietet Java eine integrierte Funktion Character.isLetterOrDigit(), die uns helfen kann, dieses Urteil schnell zu vervollst?ndigen. Die Funktion Character.isLetterOrDigit() akzeptiert ein Zeichen als Parameter

Verwenden Sie die Funktion Character.isWhitespace() von Java, um festzustellen, ob ein Zeichen ein Leerzeichen ist. Bei der Java-Programmierung kommt es h?ufig vor, dass Sie feststellen müssen, ob es sich bei einem Zeichen um ein Leerzeichen handelt. Leerzeichen beziehen sich auf Zeichen, die unsichtbar sind und nicht auf dem Bildschirm gedruckt werden, wie z. B. Leerzeichen, Tabulatoren, Zeilenumbrüche usw. Java stellt in der Character-Klasse die Funktion isWhitespace() bereit, um zu bestimmen, ob ein Zeichen ein Leerzeichen ist. Die Funktion isWhitespace() ist C
