如何在php中将变量(文本/字符串)转换为utf8mb4

Muk*_*yar 4 php utf-8 utf8mb4 urdu

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

$var = = "???";

echo utf8mb4_encode($string);

output = نور // its $var output in UTFMB4
Run Code Online (Sandbox Code Playgroud)

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

han*_*rik 6

mb_convert_encoding 就是答案。另一个选项是iconv 函数- 但这是假设 $var 还没有在 utf8 中 - 您必须首先找出编码 $var 的字符集。如果您的变量确实硬编码到 PHP 脚本本身,那么:

它已经是 utf-8 编码的

或者

您的 php 脚本以

<?php
declare(encoding='ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)

(只需用实际编码替换 ISO-8859-1)

或者

它是您源代码中的一个错误。(因为PHP源代码默认是UTF-8编码的,除非在编码声明中另有说明)

assuming ISO-8859-1, $result = mb_convert_encoding($string, 'UTF-8', 'ISO-8859-1'); / $result=iconv('ISO-8859-1','UTF-8',$string);

(PS, utf8mb4 is NOT a character encoding, utf8mb4 is just MySQL's nickname for utf8. what MySQL calls utf8 is actually a 3-byte subset of the real utf8. and what MySQL calls utf8mb4 is the real utf8. its just some MySQL brain-damage. and unfortunately, MariaDB inherited this brain-damage from MySQL when it was forked.)


oda*_*dan 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;
Run Code Online (Sandbox Code Playgroud)