嗨,我正在寻找 utf8mb4 的编码功能,
$var = = "نور";
echo utf8mb4_encode($string);
output = نور // its $var output in UTFMB4
输出应该是 "نور" 这个,它是 utfmb4 中 $var 的转换
mb_convert_encoding 就是答案。另一个选项是iconv 函数- 但这是假设 $var 尚未在 utf8 中 - 您必须首先找出 $var 编码的字符集。如果您的变量确实被硬编码到 PHP 脚本本身,那么:
它已经是 utf-8 编码的
或者
你的 php 脚本以
<?php
declare(encoding='ISO-8859-1');
(只需用实际编码替换 ISO-8859-1)
或者
它是您源代码中的一个错误。(因为 PHP 源代码默认是 UTF-8 编码的,除非在编码声明中另有说明)
假设 ISO-8859-1, $result = mb_convert_encoding($string, 'UTF-8', 'ISO-8859-1');
/$result=iconv('ISO-8859-1','UTF-8',$string);
(PS,utf8mb4
不是字符编码,utf8mb4 只是 MySQL 对 utf8 的昵称。MySQL 所称utf8
的实际上是真正 utf8 的 3 字节子集。而 MySQL 所称utf8mb4
的是真正的 utf8。它只是一些 MySQL 脑损伤。和不幸的是,MariaDB 在分叉时继承了 MySQL 的这种脑损伤。)
mb_convert_encoding 函数的返回值可以为您提供所需的结果。
$string = "نور";
$result = mb_convert_encoding($string, 'UTF-8', 'Windows-1252');
//$result = mb_convert_encoding($string, 'UTF-8', 'Windows-1254');
echo $result;