У меня есть код ниже, который пытается преобразовать строку из UTF в CP1256. Я хочу расшифровать строку на арабский, а шифрование страницы фиксируется на UTF8.
<?php
$string = "ãÍãÏ Úæäí ãÍãæÏ Úáí";
$string = iconv("UTF-8//TRANSLIT//IGNORE", "Windows-1252//TRANSLIT//IGNORE", $string);
echo $string;
?>
$strings = "ãÍãÏ Úæäí ãÍãæÏ Úáí";
setlocale(LC_CTYPE, 'nl_NL.UTF-8');
$convert = iconv('UTF-8', 'windows-1251//TRANSLIT//IGNORE', $strings);
echo var_dump($convert);
Таким образом, ваш арабский текст был закодирован в Windows-1256, а затем неправильно закодирован в Windows-1252.
Если ваш исходный файл в кодировке UTF-8, ответ:
<?php
$string = "ãÍãÏ Úæäí ãÍãæÏ Úáí";
$string = iconv("UTF-8//TRANSLIT//IGNORE", "Windows-1252//TRANSLIT//IGNORE", $string);
# $string is now back to its 1256 encoding. Encode to UTF-8 for web page
$string = iconv("Windows-1256//TRANSLIT//IGNORE", "UTF-8//TRANSLIT//IGNORE", $string);
echo $string;
?>
Если ваш исходный файл закодирован в «windows-1252», то вы должны использовать:
<?php
$string = "ãÍãÏ Úæäí ãÍãæÏ Úáí";
# Interperate windows-1252 string as if it were windows-1256. Encode to UTF-8 for web page
$string = iconv("Windows-1256//TRANSLIT//IGNORE", "UTF-8//TRANSLIT//IGNORE", $string);
echo $string;
?>
если ты $string
на самом деле происходит из базы данных или файла, то вам необходимо определить кодировку источника перед применением любого преобразования.