Heim php教程 php手册 php iconv() 编码转换出错 Detected an illegal character

php iconv() 编码转换出错 Detected an illegal character

May 25, 2016 pm 04:53 PM
character iconv

原型:string iconv ( string $in_charset , string $out_charset , string $str )

特别是第二个参数说明:the output charset.

用iconv()转换一个输出字符编码不支持的字符时,如iconv('utf-8', 'gb2312', 'www.phprm.com'),会遇到这样的错误提示:notice: iconv() [function.iconv]: detected an illegal character in input string ...

因为gb2312表示的是简体中文,不支持像"www.phprm.com"之类的更为复杂的汉字以及一些特殊字符,这当然会报错了,解决办法有两种:

1. 扩大输出字符编码的范围,如iconv('utf-8', 'gbk', 'www.phprm.com'),则可以正确地输出,因为gbk支持的字符范围更广;

2. 在输出的字符编码字符串后面加上"//ignore",如iconv('utf-8', 'gb2312//ignore', 'www.phprm.com'),这样做其实是忽略了不能转换的字符,避免了出错但却不能够正确地输出(即空白不、输出)。

下面来看看关于php教程 iconv() : detected an illegal character in input string处理方法:

$str = iconv('utf-8', 'gbk//ignore', unescape(isset($_get['str'])? $_get['str']:''));
Nach dem Login kopieren

本地测试//ignore能忽略掉它不认识的字接着往下转,并且不报错,而//translit是截掉它不认识的字及其后面的内容,并且报错。//ignore是我需要的。

在网上找到下面这篇文章,发现mb_convert_encoding也可以,但效率比iconv差,转换字符串编码iconv与mb_convert_encoding的区别:

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 )

注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://translit 和 //ignore,其中://translit 会自动将不能直接转化的字符变成一个或多个近似的字符,//ignore 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。

returns the converted string or false on failure.

使用:

1. 发现iconv在转换字符"-"到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个"-"都无法转换成功,无法输出。另外mb_convert_encoding没有这个bug.

2. mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比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转化后无法正常显示时才用mb_convert_encoding 函数

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");
Nach dem Login kopieren


本文链接:

收藏随意^^请保留教程地址.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Empfohlene wesentliche Funktionen für die chinesische Verarbeitung: Detaillierte Erläuterung der PHP-Iconv-Funktion Empfohlene wesentliche Funktionen für die chinesische Verarbeitung: Detaillierte Erläuterung der PHP-Iconv-Funktion Jun 27, 2023 pm 02:04 PM

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

Java verwendet die Funktion isLetterOrDigit() der Character-Klasse, um zu bestimmen, ob ein Zeichen ein Buchstabe oder eine Zahl ist Java verwendet die Funktion isLetterOrDigit() der Character-Klasse, um zu bestimmen, ob ein Zeichen ein Buchstabe oder eine Zahl ist Jul 24, 2023 pm 02:45 PM

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.

Verwenden Sie die Java-Funktion Character.isDefined(), um festzustellen, ob ein Zeichen ein definiertes Zeichen ist Verwenden Sie die Java-Funktion Character.isDefined(), um festzustellen, ob ein Zeichen ein definiertes Zeichen ist Jul 25, 2023 am 10:33 AM

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

Interpretation der Java-Dokumentation: Detaillierte Erläuterung der isAlphabetic()-Methode der Character-Klasse Interpretation der Java-Dokumentation: Detaillierte Erläuterung der isAlphabetic()-Methode der Character-Klasse Nov 04, 2023 am 10:05 AM

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

Verwenden Sie die Java-Funktion Character.isLetterOrDigit(), um zu bestimmen, ob ein Zeichen ein Buchstabe oder eine Zahl ist Verwenden Sie die Java-Funktion Character.isLetterOrDigit(), um zu bestimmen, ob ein Zeichen ein Buchstabe oder eine Zahl ist Jul 25, 2023 pm 04:22 PM

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

Einführung in den Befehl iconv unter CentOS Einführung in den Befehl iconv unter CentOS Dec 29, 2023 pm 07:52 PM

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 Java-Funktion Character.isUpperCase(), um festzustellen, ob es sich bei einem Zeichen um einen Großbuchstaben handelt Verwenden Sie die Java-Funktion Character.isUpperCase(), um festzustellen, ob es sich bei einem Zeichen um einen Großbuchstaben handelt Jul 25, 2023 pm 11:45 PM

Verwenden Sie die Funktion Character.isUpperCase() von Java, um festzustellen, ob ein Zeichen ein Großbuchstabe ist. In der Java-Programmierung müssen wir manchmal feststellen, ob ein Zeichen ein Großbuchstabe ist. Glücklicherweise bietet Java eine sehr praktische Möglichkeit, diese Funktion zu erreichen, nämlich die Funktion isUpperCase() der Character-Klasse zu verwenden. In diesem Artikel wird erläutert, wie Sie mit dieser Funktion Urteile fällen und dies anhand von Codebeispielen veranschaulichen. Zuerst müssen wir Chara verstehen

Interpretation der Java-Dokumentation: Detaillierte Erläuterung der isLowerCase()-Methode der Character-Klasse Interpretation der Java-Dokumentation: Detaillierte Erläuterung der isLowerCase()-Methode der Character-Klasse Nov 03, 2023 am 10:36 AM

Interpretation der Java-Dokumentation: Detaillierte Erläuterung der Methode isLowerCase() der Klasse Character. Die Klasse Character in Java bietet viele Methoden zur Verarbeitung von Zeichenoperationen. Die Methode isLowerCase() wird verwendet, um zu bestimmen, ob ein Zeichen ein Kleinbuchstabe ist. Der konkrete Einsatz und die Anwendungsszenarien dieser Methode werden in diesem Artikel ausführlich erläutert. 1. Funktion und Verwendung der Methode isLowerCase() Die Methode isLowerCase() der Klasse Character

See all articles