1

専用サーバーの場合:

$_POST['kannada']='ಕನ್ನಡ';
rawurlencode($_POST['kannada']);

与える

%26%233221%3B%26%233240%3B%26%233277%3B%26%233240%3B%26%233233%3B

私のローカルサーバーで:

$_POST['kannada']='ಕನ್ನಡ';
rawurlencode($_POST['kannada'])

与える

%E0%B2%95%E0%B2%A8%E0%B3%8D%E0%B2%A8%E0%B2%A1

期待される結果は、ローカルサーバーで得ているものです。この異なる結果はなぜですか?教えてください。

Ok。以下は、さまざまなサーバーで実行したファイルです。確認できます。

<!DOCTYPE html>
<html lang="kn">
<head>
<meta charset="UTF-8" />
</head>
<body>
<form name="submit" method="post">
<input type="text" name="kannada">
<input type="submit" name="submit">
</form>
<?php
if(isset($_POST['submit']))
{
    echo $_POST['kannada']."<br/>";
    echo rawurlencode($_POST['kannada']);
}
?>
</body>
</html>
4

2 に答える 2

1

最初の結果は Unicode 文字セットです

mb_convert_encoding($unicode_content, 'UTF-8', 'HTML-ENTITIES');

http://phpfiddle.org/main/code/xkj-nyr

<?php
//UNICODE
$a = rawurldecode("%26%233221%3B%26%233240%3B%26%233277%3B%26%233240%3B%26%233233%3B");

//UTF-8
$b = rawurldecode("%E0%B2%95%E0%B2%A8%E0%B3%8D%E0%B2%A8%E0%B2%A1");

//Convert to utf-8
echo mb_convert_encoding($a, 'UTF-8', 'HTML-ENTITIES');
echo "\r\n";
echo $b;
于 2014-01-23T12:15:44.847 に答える