Heim > Backend-Entwicklung > PHP-Tutorial > So verwenden Sie die Iconv-Funktion in PHP

So verwenden Sie die Iconv-Funktion in PHP

不言
Freigeben: 2023-03-23 11:30:02
Original
2495 Leute haben es durchsucht

Der Inhalt dieses Artikels stellt die Verwendung der Iconv-Funktion in PHP vor. Ich werde ihn hier mit Ihnen teilen. Freunde in Not können darauf verweisen.

Ich arbeite derzeit an einem Programm und muss es verwenden die iconv-Funktion. Konvertieren Sie die erfasste utf-8-codierte Seite in gb2312. Ich habe festgestellt, dass die Daten ohne Grund weniger sind, wenn ich die iconv-Funktion zum Transkodieren verwende.

Die Iconv-Funktionsbibliothek kann die Konvertierung zwischen verschiedenen Zeichensätzen durchführen und ist eine unverzichtbare Basisfunktionsbibliothek in der PHP-Programmierung.
1. Laden Sie die libiconv-Funktionsbibliothek herunter: http://ftp.gnu.org/pub/gnu/libiconv-1.9.2.tar.gz;
2 .tar.gz;
3. Installiere libiconv
#configure --prefix=/usr/local/iconv
#make
#make install
4. -with-iconv=/usr/local/iconv

unter Windows

Ich arbeite derzeit an einem Diebprogramm und muss die Iconv-Funktion verwenden, um das UTF zu erfassen -8 codierte Seiten wurden in gb2312 konvertiert, und ich stellte fest, dass die Daten ohne Grund weniger wären, wenn ich die iconv-Funktion zum Transkodieren der erfassten Daten verwenden würde. Es machte mich eine Weile deprimiert. Nachdem ich die Informationen im Internet überprüft hatte, stellte ich fest, dass es sich um einen Fehler in der Iconv-Funktion handelte. iconv macht beim Konvertieren des Zeichens „-“ in gb2312 einen Fehler
Die Lösung ist sehr einfach: Fügen Sie nach der zu konvertierenden Codierung „//IGNORE“ hinzu, was der zweite Parameter der iconv-Funktion ist . Wie folgt:

Das Folgende ist der zitierte Inhalt:

Code kopieren Der Code lautet wie folgt:

iconv("UTF-8","GB2312//IGNORE",$data)
Nach dem Login kopieren


ignore bedeutet, Fehler während der Konvertierung zu ignorieren. Ohne den Ignorierparameter können nicht alle Zeichenfolgen nach diesem Zeichen gespeichert werden.

Code kopieren Der Code lautet wie folgt:

<?php 
echo $str= &#39;你好,这里是卖咖啡!&#39;; 
echo &#39;<br />&#39;; 
echo iconv(&#39;GB2312&#39;, &#39;UTF-8&#39;, $str); //将字符串的编码从GB2312转到UTF-8 
echo &#39;<br />&#39;; 
echo iconv_substr($str, 1, 1, &#39;UTF-8&#39;); //按字符个数截取而非字节 
print_r(iconv_get_encoding()); //得到当前页面编码信息 
echo iconv_strlen($str, &#39;UTF-8&#39;); //得到设定编码的字符串长度 
//也有这样用的 
$content = iconv("UTF-8","gbk//TRANSLIT",$content); 
?>
Nach dem Login kopieren

iconv ist nicht die Standardfunktion von PHP und auch ein standardmäßig installiertes Modul . Es muss installiert werden, bevor es verwendet werden kann.
Wenn es Windows2000+php ist, können Sie die php.ini-Datei ändern und das „;“ vor der Erweiterung=php_iconv.dll entfernen. Gleichzeitig müssen Sie die iconv.dll in Ihre ursprüngliche PHP-Installationsdatei kopieren zu Ihrem winnt/ Unter system32 (wenn Ihre DLL auf dieses Verzeichnis verweist)
Verwenden Sie in der Linux-Umgebung die statische Installation und fügen Sie ein zusätzliches Element hinzu --with-iconv, wenn Sie phpinfo konfigurieren, können Sie das Element iconv sehen. (Linux7.3+Apache4.06+php4.3.2),

Download: ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz
Installation:
#cp libiconv-1.8.tar.gz /usr/local/src
#tar zxvf lib*
#./configure --prefix=/usr/local/libiconv
#make
#make install
PHP kompilieren
#./configure --prefix=/usr/local/php4.3.2 --with-iconv=/usr/local/libiconv/
Einfach zu verwenden Beispiel:

<?php 
echo iconv("gb2312","ISO-8859-1","我们"); 
?>
Nach dem Login kopieren

Einführung in die Funktionen mb_convert_encoding und iconv in PHP

Die Funktion mb_convert_encoding wird zum Konvertieren von Kodierungen verwendet. Früher habe ich das Konzept der Programmcodierung nicht verstanden, aber jetzt scheine ich es ein wenig zu verstehen.
Bei Englisch gibt es jedoch im Allgemeinen keine Kodierungsprobleme, nur bei chinesischen Daten tritt dieses Problem auf. Wenn Sie beispielsweise Zend Studio oder Editplus zum Schreiben eines Programms verwenden, verwenden Sie die GBK-Codierung. Wenn die Daten in die Datenbank eingegeben werden müssen und die Datenbankcodierung utf8 ist, müssen die Daten codiert und konvertiert werden, andernfalls wird dies der Fall sein werden beim Betreten der Datenbank verstümmelt.

Sehen Sie sich die offizielle Verwendung von mb_convert_encoding an:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php

Erstellen Sie ein GBK in UTF - 8

< ?php 
header("content-Type: text/html; charset=Utf-8"); 
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); 
?>
Nach dem Login kopieren


Ein weiterer GB2312 zu Big5

< ?php 
header("content-Type: text/html; charset=big5"); 
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); 
?>
Nach dem Login kopieren

Aber um die oben genannte Funktion nutzen zu können, müssen Sie sie installieren, aber aktivieren Zuerst die mbstring-Erweiterungsbibliothek.

Eine andere Funktion iconv in PHP wird ebenfalls zum Konvertieren der String-Kodierung verwendet und ihre Funktion ähnelt der obigen Funktion.

Im Folgenden finden Sie einige detaillierte Beispiele:

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



用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;


string iconv ( string in_charset, string out_charset, string str )
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.


使用:

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

一般情况下用 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.
/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
$str = mb_convert_encoding($str, “EUC-JP”, “auto”);

例子:

$content = iconv(”GBK”, “UTF-8″, $content); 
$content = mb_convert_encoding($content, "UTF-8″,"GBK");
Nach dem Login kopieren

php中使用iconv函数时容易忽略的参数
今天在处理抓取内容的时候,当采用iconv进行编码转换的时候,发现结果会中断,猜是字符集的问题,考虑怎么跳过目标字符集不存在的字符,查手册发现iconv的函数只有三个参数,好像不行,然后查网上有人说可以,但是很奇怪怎么实现,最后发现英文描述有说可以加标识到目标编码后面:“TRANSLIT”,很郁闷怎么加呢?原来是先加“//”,真是郁闷,竟然有这样的设计
原型: $txtContent = iconv("utf-8",'GBK',$txtContent);

特殊参数:iconv("UTF-8","GB2312//IGNORE",$data)


两个可选的辅助参数:TRANSLIT和IGNORE ,(其中IGNORE 就是说遇到无法转换的就跳过)。 Description

string iconv ( string in_charset, string out_charset, string str )

Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure.

If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.

相关推荐:

php 通过iconv将字符串从GBK转换为UTF8字符集的方法

PHPiconv函数

php 获得英文和中文混合的字数iconv_strlen

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Iconv-Funktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage