PHP在URL中使用UTF8字符,URL编码失败

PHP在URL中使用UTF8字符,URL编码失败,php,url,encoding,utf-8,fopen,Php,Url,Encoding,Utf 8,Fopen,在我的PHP脚本中,我尝试将utf8字符发送到google translate网站,以便他们向我发送文本翻译,但这对utf8字符(如中文、阿拉伯文和俄文)不起作用,我不知道为什么。如果我尝试将“аааааа”翻译成英语,我可以使用以下链接:аааааа 它会返回这个:[[[“你好吗”,“аааааа”,,1],“ru”] 很好的翻译,这正是我想要的,但是如果我尝试用PHP重新创建它,我会这样做(我在开始时使用字节,因为我未来的脚本将使用字节作为起点): 我使用的代码: <?php head

在我的PHP脚本中,我尝试将utf8字符发送到google translate网站,以便他们向我发送文本翻译,但这对utf8字符(如中文、阿拉伯文和俄文)不起作用,我不知道为什么。如果我尝试将“аааааа”翻译成英语,我可以使用以下链接:аааааа

它会返回这个:[[[“你好吗”,“аааааа”,,1],“ru”]

很好的翻译,这正是我想要的,但是如果我尝试用PHP重新创建它,我会这样做(我在开始时使用字节,因为我未来的脚本将使用字节作为起点):

我使用的代码:

<?php
header('Content-Type: text/html; charset=utf-8');
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');

$from = 'ru';
$to = 'en';
$text = rawurlencode('как дела');
$url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=' . $from . '&tl=' . $to . '&dt=t&q=' . $text;
$url = mb_convert_encoding($url, "UTF-8", "ASCII");
$call = fopen($url,"r");
$contents = fread($call,2048);

print 'URL: ' . $url . '<br>';
print 'Encoding: ' . mb_detect_encoding($url) . '<br>';;
print 'File contents: ' . $contents;
?>


已解决!我从另一个而不是这些论坛得到了关于设置用户代理的提示。经过进一步的研究,我发现答案就是我问题的答案。现在一切都好了

默认情况下,PHP不是UTF-8编码的。您需要在PHP代码中手动设置。你需要设置属性。编辑你的问题,不要在评论中发布代码。这很难阅读。我更新了开场白。
<?php
$from = 'ru';
$to = 'en';
$text = "%D0%BA%D0%B0%D0%BA+%D0%B4%D0%B5%D0%BB%D0%B0"; // code units of: как дела
$url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=' . $from . '&tl=' . $to . '&dt=t&q=' . $text;
$call = fopen($url,"r");
$contents = fread($call,2048);

print $contents;
?>
URL: https://translate.googleapis.com/translate_a/single?client=gtx&sl=ru&tl=en&dt=t&q=%D0%BA%D0%B0%D0%BA%20%D0%B4%D0%B5%D0%BB%D0%B0
Encoding: ASCII
File contents: [[["RєR Rє RґRμR ° \"° F","как дела",,,0]],,"ru"]
<?php
header('Content-Type: text/html; charset=utf-8');
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');

$from = 'ru';
$to = 'en';
$text = rawurlencode('как дела');
$url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=' . $from . '&tl=' . $to . '&dt=t&q=' . $text;
$url = mb_convert_encoding($url, "UTF-8", "ASCII");
$call = fopen($url,"r");
$contents = fread($call,2048);

print 'URL: ' . $url . '<br>';
print 'Encoding: ' . mb_detect_encoding($url) . '<br>';;
print 'File contents: ' . $contents;
?>