阿拉伯语没有正确编码

时间:2016-03-12 13:56:03

标签: php character-encoding arabic url-encoding

我有字符串:

$str = 'ماجد';

这需要编码为:

'%E3%C7%CC%CF'

但我无法弄清楚如何到达这个编码的字符串。我相信它是Windows-1256。上面编码的字符串是我用的程序编码的方式。

有谁知道如何到达这个字符串?

2 个答案:

答案 0 :(得分:1)

如果您知道要使用Windows-1256,那么您所要做的就是将输入字符串(UTF-8)的编码更改为Windows-1256。然后,您将urlencode()应用于返回的字符串以及全部。

有几种方法可以在PHP中更改字符串的编码。其中一个(我测试并提供您期望的结果)正在使用iconv()

$str  = 'ماجد';
$conv = iconv('utf-8', 'windows-1256', $str);
echo(urlencode($conv));

答案 1 :(得分:1)

你需要以某种方式将字符串拆分为十六进制表示,然后在十六进制数字对前放置一个% singn。

<?php

$hexString = bin2hex("ماجد");  
for($i = 0; $i < strlen($hexString); $i += 2){
    echo "%".substr($hexString, $i, 2);
}

?>   

这样就可以了,但我确信有更优雅的方式。