我有字符串:
$str = 'ماجد';
这需要编码为:
'%E3%C7%CC%CF'
但我无法弄清楚如何到达这个编码的字符串。我相信它是Windows-1256。上面编码的字符串是我用的程序编码的方式。
有谁知道如何到达这个字符串?
答案 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);
}
?>
这样就可以了,但我确信有更优雅的方式。