Maison  >  Article  >  développement back-end  >  Comment convertir gbk en utf8 en php ?

Comment convertir gbk en utf8 en php ?

青灯夜游
青灯夜游original
2020-11-03 17:29:594839parcourir

La fonction iconv() peut être utilisée en php pour convertir l'encodage gbk en encodage utf8 ; la fonction iconv peut convertir un fichier de jeu de caractères connu en un autre fichier de jeu de caractères connu, le format de syntaxe est " iconv('GBK ', 'UTF-8', chaîne)".

Comment convertir gbk en utf8 en php ?

Recommandé : "Tutoriel vidéo PHP"

Convertir gbk en utf8 en php

En php, vous pouvez utiliser la fonction iconv() pour convertir gbk en utf8.

La fonction iconv peut convertir un fichier de jeu de caractères connu en un autre fichier de jeu de caractères connu. Par exemple : convertissez de GB2312 en UTF-8.

La fonction iconv est intégrée à PHP5 et le jeu de caractères GB est activé par défaut.

Exemple :

<?php
header("Content-type:text/html;charset=GB2312");
echo $str= &#39;你好,这里是gbk转utf8!&#39;;
echo &#39;<br />&#39;;
echo iconv(&#39;GB2312&#39;, &#39;UTF-8&#39;, $str); //将字符串的编码从GB2312转到UTF-8

Explication : fonction php iconv

La bibliothèque de fonctions iconv en php peut compléter la conversion entre différents jeux de caractères, qui est php Une bibliothèque de fonctions de base indispensable en programmation mais parfois iconv est moins capable de transcoder certaines données sans raison. Par exemple, une erreur se produira lors de la conversion du caractère « - » en gb2312.

Jetons lentement un coup d'œil à l'utilisation de cette fonction.

L'application la plus simple consiste à remplacer gb2312 par utf-8 :

$text=iconv("GB2312","UTF-8",$text);

En cours d'utilisation de $text=iconv("UTF-8","GB2312",$text), si vous rencontrez des caractères spéciaux, tels que : "-", "." et autres caractères dans les noms anglais, la conversion est interrompue. Le texte après ces caractères ne peut pas être converti davantage.

Pour résoudre ce problème, vous pouvez utiliser le code suivant pour y parvenir :

$text=iconv("UTF-8","GBK",$text);

Vous avez bien lu, c'est aussi simple que cela, n'utilisez pas gb2312, écrivez-le simplement en GBK.

Il existe une autre méthode, le deuxième paramètre, ajoutez //IGNORE, ignorez l'erreur, comme suit :

iconv("UTF-8","GB2312//IGNORE",$data);

Il n'y a pas de comparaison spécifique entre ces deux méthodes, j'ai l'impression que la première (GBK au lieu de gb2312) est meilleure.

Description d'Iconv() dans le manuel php :

iconv

(PHP 4 > ; = 4.0.5, PHP 5)
iconv – Convertir la chaîne en codage de caractères demandé
Description
string iconv ( string in_charset, string out_charset, string str )
Effectue une conversion de jeu de caractères sur la chaîne str de in_charset à out_charset. Renvoie la chaîne convertie ou FALSE en cas d'échec.
Si vous ajoutez la chaîne //TRANSLIT à out_charset, la translittération est activée. Cela signifie que lorsqu'un caractère ne peut pas être représenté dans le jeu de caractères cible, il peut le faire. être approximé par un ou plusieurs caractères d'apparence similaire. Si vous ajoutez la chaîne //IGNORE, les caractères qui ne peuvent pas être représentés dans le jeu de caractères cible sont ignorés silencieusement, sinon, str est coupé du premier caractère illégal.

<.>Lorsque vous utilisez cette fonction pour convertir l'encodage de chaîne, veuillez noter que si vous convertissez utf-8 en gb2312, la chaîne peut être tronquée. À ce stade, vous pouvez utiliser la méthode suivante pour résoudre le problème :

$str=iconv(&#39;utf-8&#39;,"gb2312//TRANSLIT",file_get_contents($filepath));

C'est-à-dire ajouter la partie rouge dans le deuxième paramètre, ce qui signifie : si aucun caractère correspondant à l'encodage source n'est trouvé dans l'encodage cible , des caractères similaires seront sélectionnés. Effectuez la conversion. Vous pouvez également utiliser le paramètre //IGNORE ici pour ignorer les caractères qui ne peuvent pas être convertis.

ignorer signifie ignorer les erreurs lors de la conversion. Sans le paramètre ignore, toutes les chaînes suivant ce caractère ne peuvent pas être enregistrées.

iconv n'est pas la fonction par défaut de php, et c'est aussi un module installé par défaut. Il doit être installé avant de pouvoir être utilisé.

S'il s'agit de Windows2000+php, vous pouvez modifier le fichier php.ini et supprimer le ";" avant extension=php_iconv.dll. En même temps, vous devez copier le fichier iconv.dll sous votre original. php dans votre sous winnt/system32 (si votre dll pointe vers ce répertoire). Dans l'environnement Linux, en utilisant une installation statique, ajoutez simplement un élément supplémentaire --with-iconv lors de la configuration. L'élément iconv est visible dans phpinfo. (Linux7.3+Apache4.06+php4.3.2).

Introduction aux fonctions mb_convert_encoding et iconv

Cette fonction est utilisée pour convertir les encodages. Avant, je ne comprenais pas le concept de codage de programme, mais maintenant il me semble comprendre un peu. Cependant, l'anglais n'a généralement pas de problèmes d'encodage, seules les données chinoises auront ce problème. Par exemple, lorsque vous utilisez Zend Studio ou Editplus pour écrire un programme, vous utilisez le codage gbk. Si les données doivent être saisies dans la base de données et que le codage de la base de données est utf8, alors les données doivent être codées et converties, sinon elles le seront. devenir tronqué lors de l'entrée dans la base de données. mb_convert_encoding

Créer un GBK vers UTF-8 :

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

Un autre GB2312 vers Big5 :

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

Mais utilisez ce qui précède. La fonction doit être installée mais la bibliothèque d'extension mbstring doit d'abord être activée.

Vous devez d'abord activer la bibliothèque d'extension mbstring. Dans php.ini, ajoutez : extension=php_mbstring.dll devant ; vous pouvez spécifier plusieurs encodages d'entrée. identifier en fonction du contenu, mais l'efficacité d'exécution Bien pire qu'iconv ;string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )

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

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数。

$content = iconv("GBK", "UTF-8″, $content);
$content = mb_convert_encoding($content, "UTF-8″, "

更多编程相关知识,请访问:编程学习课程!!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn