Здравствуйте, я разрабатываю скрипт, который генерирует изображение из текста, который выглядит следующим образом:
<?php
ini_set("default_charset", "UTF-8");
mb_internal_encoding("UTF-8");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$font ='Amperzand.ttf';
$fuente_tamano = 25;
$texto="Es irónico que el amor sea lo más bonito y lo más letal.";
utf8_encode($texto);
$im = imagecreate(400,400);
$fondo=imagecolorallocate ($im, rand(0,255), rand(0,100), rand(0,255));
//Colores
$blanco = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$gris=imagecolorallocate ($im, 160, 160,160);
$negro=imagecolorallocate ($im, 0, 0, 0);
$colorGris = imagecolorallocate($im, 200, 200, 200);
$colorAzul = imagecolorallocate($im, 0, 0, 255);
$lines1 = explode('|', wordwrap(utf8_encode($texto), 28, '|'));
$y=50;
foreach ($lines1 as $line1) {
{
$line1=trim($line1);
//$line1 = str_pad($line1, 30,"0", STR_PAD_BOTH);
$marco= ImageTTFBBox ($fuente_tamano, 0, $font, $line1);
$x = (400 - ($marco[2]-$marco[0])) / 2;
$y += 30;
// El texto negro para que lo usaremos como borde
imagettftext($im, $fuente_tamano, 0, $x + 2 , $y + 1 , $negro, $font, $line1);
imagettftext($im,$fuente_tamano, 0, $x - 2 , $y - 1 , $negro, $font, $line1);
// El texto blanco
imagettftext($im,$fuente_tamano, 0, $x , $y, $blanco, $font, $line1);
}
}
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>
Как увидеть переменную?
$текст
содержит фразу с акцентами, которая при передаче на изображение оказывается неполной и с ошибками.
Интересно, есть ли какая-нибудь функция, решающая эту проблему и как ее реализовать в этом коде.
Я пробовал, utf8_decode();
но не могу решить
Используя данное решение использования utf8_encode();
и выхода из сценария таким образом, но проблема все еще сохраняется, я надеюсь, что кто-то может сказать мне, где это неправильно.
вы можете попробовать добавить это в свой файл PHP:
Аналогичным образом необходимо исправить следующую строку:
А:
как они уже упоминали, используйте utf8_decode
Ваше здоровье
Я надеюсь, что вы можете использовать эту функцию, используя
mb_convert_encoding()
,preg_replace()
и регулярные выражения (регулярные выражения). (Возможно, есть лучшее регулярное выражение, но я мало что знаю, поэтому надеюсь, что оно сработает для вас)не используйте
utf8_decode();
использованиеutf8_encode();
, так как вы «декодируете» его в utf8, и вам нужно «закодировать» его.