Maison  >  Article  >  développement back-end  >  Explication détaillée de la fonction de conversion chinoise de PHP

Explication détaillée de la fonction de conversion chinoise de PHP

PHPz
PHPzoriginal
2023-04-21 09:12:58858parcourir

Avec le développement d'Internet, de plus en plus de sites Web et d'applications ont commencé à impliquer des questions multilingues. En tant que langue particulière, le chinois est relativement difficile à coder et à convertir. Dans le langage PHP, une multitude de fonctions de conversion chinoise sont fournies. Cet article présentera ces fonctions en détail.

1. Encodage chinois

  1. fonction urlencode()

La fonction urlencode() peut encoder les caractères chinois et les convertir sous la forme %XX, où XX est la représentation hexadécimale du caractère dans le jeu de caractères. Par exemple, le mot « chinois » sera converti en « %E4%B8%AD%E6%96%87 » après avoir utilisé la fonction urlencode().

Exemple :

$str = "中文";
echo urlencode($str);  // 输出 %E4%B8%AD%E6%96%87
  1. fonction rawurlencode()

La fonction rawurlencode() est fondamentalement la même que la fonction urlencode(). La différence est que la fonction rawurlencode() n'encodera pas les espaces, mais les convertira en signe "+". .

Exemple : la fonction

$str = "中文 test";
echo rawurlencode($str);  // 输出 %E4%B8%AD%E6%96%87+test
  1. urldecode() La fonction

urldecode() peut décoder une chaîne codée à l'aide de la fonction urlencode() et convertir les caractères sous la forme %XX en caractères chinois correspondants.

Exemple :

$str = "%E4%B8%AD%E6%96%87";
echo urldecode($str);  // 输出 中文
  1. rawurldecode() fonction

rawurldecode() a le même effet que la fonction urldecode(), la différence est que la fonction rawurldecode() convertira le signe "+" en espaces.

Exemple :

$str = "%E4%B8%AD%E6%96%87+test";
echo rawurldecode($str);  // 输出 中文 test

2. Conversion chinoise

  1. fonction iconv()

La fonction iconv() peut compléter la conversion entre différents encodages, y compris les formats d'encodage couramment utilisés tels que utf-8, gbk, big5, etc. Le format de syntaxe est :

iconv($in_charset, $out_charset, $string);

où $in_charset représente le format d'encodage de la chaîne d'entrée, $out_charset représente le format d'encodage de la chaîne de sortie et $string représente la chaîne à convertir.

Par exemple, convertissez une chaîne codée en utf-8 en une chaîne codée en gbk :

$str = "中文";
$str = iconv("utf-8", "gbk", $str);
echo $str;  // 输出乱码,应该在gbk编码的环境下查看

Remarque : des caractères tronqués peuvent apparaître après la conversion de la fonction iconv(). Cela est principalement dû à la correspondance entre un certain caractère dans les deux. encodages. La relation peut ne pas exister et ne peut donc pas être convertie correctement. Une solution à ce problème peut consister à utiliser la méthode de conversion Unicode.

  1. Fonction mb_convert_encoding()

La fonction mb_convert_encoding() peut également compléter la conversion entre différents encodages. La différence avec la fonction iconv() est que son utilisation est plus flexible et que davantage d'options de conversion peuvent être spécifiées. Le format de syntaxe est :

mb_convert_encoding($string, $to_encoding, $from_encoding);

où $string représente la chaîne à convertir, $to_encoding représente le format d'encodage converti et $from_encoding représente le format d'encodage de la chaîne d'origine.

Par exemple, convertissez une chaîne codée en utf-8 en chaîne codée en gbk :

$str = "中文";
$str = mb_convert_encoding($str, "gbk", "utf-8");
echo $str;  // 输出乱码,应该在gbk编码的环境下查看
  1. La fonction utf8_encode() et la fonction utf8_decode()

La fonction utf8_encode() peut convertir une chaîne codée ISO-8859-1 Convertir en utf- 8, et la fonction utf8_decode() peut convertir une chaîne codée en utf-8 en une chaîne codée en ISO-8859-1.

Par exemple, convertissez une chaîne codée ISO-8859-1 en chaîne codée utf-8 :

$str = "中文";
$str = utf8_encode($str);
echo $str;  // 输出中文

Remarque : la fonction utf8_encode() peut provoquer des caractères tronqués après la conversion et doit être utilisée avec prudence.

  1. Fonction chr() et fonction ord()

La fonction chr() peut convertir la valeur de code ASCII donnée en caractère correspondant, tandis que la fonction ord() peut convertir le caractère donné en valeur de code ASCII correspondante. En particulier, dans l'encodage UTF-8, chaque caractère peut comporter de 1 à 4 octets. Pour l'encodage UTF-8 d'un certain caractère, vous pouvez obtenir sa valeur décimale via la fonction ord(), puis utiliser la fonction chr() pour la convertir en caractère.

Par exemple, convertissez le caractère "中" en son encodage UTF-8 :

$ord1 = ord("中");  // 取得字符"中"的UTF-8编码的第一个字节的值
$ord2 = ord(substr("中", 1));  // 取得字符"中"的UTF-8编码的第二个字节的值

$str = chr(0xe4) . chr(0xb8) . chr(0xad);  // 使用chr()函数转换为UTF-8编码的字符串
echo $str;  // 输出 "中"

Remarque : lorsque vous utilisez la fonction chr() et la fonction ord(), tenez compte attentivement des différences d'encodage des différents jeux de caractères.

3. Jugement de la longueur chinoise

  1. Fonction strlen() La fonction

strlen() est utilisée pour calculer la longueur d'une chaîne, y compris les caractères chinois et anglais. Cependant, étant donné que les caractères chinois occupent différents nombres d'octets dans différents codages, le nombre de caractères chinois ne peut pas être compté avec précision lors du calcul de la longueur de la chaîne chinoise. Par exemple, utilisez la fonction strlen() pour calculer la longueur du « chinois » et le résultat est 6.

Exemple : la fonction

$str = "中文";
echo strlen($str);  // 输出 6
  1. mb_strlen()

la fonction mb_strlen() peut calculer avec précision la longueur des chaînes chinoises, et des chaînes avec différents encodages peuvent être calculées.

Exemple :

$str = "中文";
echo mb_strlen($str);  // 输出 2

Remarque : Lorsque vous utilisez la fonction mb_strlen(), vous devez spécifier le jeu de caractères chinois correct. Si vous ne connaissez pas le jeu de caractères, vous pouvez utiliser la fonction mb_detect_encoding() pour le détecter.

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