2016-05-24 3 views
-1

J'ai le code ci-dessous, qui tente de convertir une chaîne de UTF à CP1256. Je veux décoder la chaîne à l'arabe, et le chiffrement page est fixée à UTF8Décodage chaîne de UTF-8 à Windows1256

<?php 

$string = "ãÍãÏ Úæäí ãÍãæÏ Úáí"; 
$string = iconv("UTF-8//TRANSLIT//IGNORE", "Windows-1252//TRANSLIT//IGNORE",  $string); 

echo $string; 

?> 
+0

Quelle est la question? –

+0

@Alastair McCormack Je veux que la chaîne soit montrée en arabe, qui est محمد عوني محمود علي –

+0

Quel est le codage de votre fichier source? –

Répondre

0
$strings = "ãÍãÏ Úæäí ãÍãæÏ Úáí"; 

setlocale(LC_CTYPE, 'nl_NL.UTF-8'); 

$convert = iconv('UTF-8', 'windows-1251//TRANSLIT//IGNORE', $strings); 

echo var_dump($convert); 
1

Ainsi, votre texte arabe, a été codé dans Windows 1256 et mal encodés Windows 1252.

Si votre fichier source est UTF-8 codé, la réponse est:

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

?> 

Si votre fichier source est "Windows 1252" codé, vous devez utiliser:

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

?> 

Si En fait, vous venez d'une base de données ou d'un fichier, puis vous devez déterminer le codage de la source avant d'appliquer une conversion.

+0

Que vous beaucoup, votre code a fonctionné comme un charme pendant quelques minutes, puis en quelque sorte il a cessé de fonctionner, le véritable exemple sur lequel je travaille peut être trouvé dans cette question [link] (http://stackoverflow.com/questions/37405245/arabic-pdf-form-to-php-to-mysql-unicode-decoding) et si vous voulez une copie du fichier PDF, je peux le télécharger. –