0

サンプル文字列を次のように変換すると:

$str = "اوقات-شرعی-جمعه-8-مرداد-ماه-به-اÙÙ‚-اردبیل"
    echo mb_convert_encoding($str, "ASCII");

UTF-8 から ASCII への変換結果は次のようになります。

%D8%A8%D8%B2%D8%B1%DA%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D9%88%D8%B1%D8%B2%D8%B4 %DA%A9%D8%A7%D8%B1%D8%A7%D9%86-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%A7%D9%84 %D9%85%D9%BE%DB%8C%DA%A9%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1

しかし、それはこれです:

?????????????????????-????????????????-??????????? ?????????-8-?????????????????????-????????????????-??? ??????-????????????-??????????????????????????

私は本当に混乱しています 誰でも問題を知っていますか?

更新:iconvも試しました:

echo iconv("UTF-8", "ASCII", $str), PHP_EOL;

しかし、それは言う:

Notice: iconv(): 入力文字列に不正な文字が検出されました

4

2 に答える 2

3

%D8 は ASCII エンコーディングではありません。Ascii には 127 文字 (拡張を使用している場合は 255 文字) があります ( http://www.asciitable.com/を参照) 。

そのため、Ø のような特殊文字には同等のものはありません。mb_convert_encoding? に置き換えることでこれを処理しますiconvが、エラーをスローします。

あなたが求めている出力は、URLエンコーディングに似ています。これを試して:

echo urlencode("اوقات-شرعی-جمعه-8-مرداد-ماه-به-اÙÙ‚-اردبیل");

于 2016-07-28T21:17:52.300 に答える