我在使用西里尔字符集检索和处理俄语数据时遇到问题。
我使用下面的代码从FTP服务器获取文本文件中的数据,并显示每个带有带问号的黑色钻石的字符。
如果我通过浏览器访问FTP地址直接查看它,它会正确显示。
我尝试更改此行: 至 和 当我得到不同的结果时,没有一个显示与浏览器直接访问文件时相同。
当我直接查看时,我不确定如何让代码显示与浏览器相同
这将是我如何直接查看正确显示的文本文件的示例:ftp://username:password@ftp.mysite.com/test.txt
这是我使用的代码,它显示带有问号的黑色钻石(其他其他不正确的字符,具体取决于上面提到的字符集)。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php
$username = "username";
$password = "password";
$server = "ftp://ftp.mysite.com"
$remoteFile = "test.txt";
$conn = ftp_connect($server);
if (@ftp_login($conn, $username, $password)) {
echo "";
}
else {
echo "";
}
ob_start();
ftp_get($conn, 'php://output', $remoteFile, FTP_ASCII);
$data = ob_get_contents();
ob_end_clean();
ftp_close($conn);
echo $data;
?>
</html>
答案 0 :(得分:1)
我设法通过使用mb_convert_encoding
添加以下行来解决此问题:
$new_data = mb_convert_encoding($data, "utf-8", "Windows-1251");
结果代码为:
<html>
<?php
$username = "username";
$password = "password";
$server = "ftp://ftp.mysite.com"
$remoteFile = "test.txt";
$conn = ftp_connect($server);
if (@ftp_login($conn, $username, $password)) {
echo "";
}
else {
echo "";
}
ob_start();
ftp_get($conn, 'php://output', $remoteFile, FTP_ASCII);
$data = ob_get_contents();
ob_end_clean();
ftp_close($conn);
$new_data = mb_convert_encoding($data, "utf-8", "Windows-1251");
echo $data;
?>
</html>
希望这有助于某人...