Как конвертировать переменную (текст / строку) в utf8mb4 в php

Привет, я ищу функцию кодирования для utf8mb4,

$var = = "نور";

echo utf8mb4_encode($string);

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

Результат должен быть "نور" this, это преобразование $var в utfmb4

2 ответа

Решение

Возвращаемое значение функции mb_convert_encoding может дать вам желаемый результат.

$string = "نور";
$result = mb_convert_encoding($string, 'UTF-8', 'Windows-1252');
//$result = mb_convert_encoding($string, 'UTF-8', 'Windows-1254');
echo $result;

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);

(ПС, utf8mb4 НЕ является кодировкой символов, utf8mb4 - это просто псевдоним MySQL для utf8. что MySQL называет utf8 на самом деле 3-байтовое подмножество реального UTF8. и что MySQL называет utf8mb4 настоящий utf8. это просто повреждение мозга MySQL. и, к сожалению, MariaDB унаследовал это повреждение мозга от MySQL, когда он был разветвлен.)

Другие вопросы по тегам