5

嗨,我正在寻找 utf8mb4 的编码功能,

$var = = "نور";

echo utf8mb4_encode($string);

output = نور // its $var output in UTFMB4

输出应该是 "نور" 这个,它是 utfmb4 中 $var 的转换

4

2 回答 2

8

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 的这种脑损伤。)

于 2017-10-22T16:05:32.907 回答
5

mb_convert_encoding 函数的返回值可以为您提供所需的结果。

$string = "نور";
$result = mb_convert_encoding($string, 'UTF-8', 'Windows-1252');
//$result = mb_convert_encoding($string, 'UTF-8', 'Windows-1254');
echo $result;
于 2017-10-22T12:30:27.260 回答