我相信,我在CP-1251中有一些网址。例如:
http://domain.com/Test - суть в этом.mp3
mb_detect_encoding
表示它是ASCII。但是,我试图将其转换为UTF-8,但没有运气。然而,以下工作:
$url = mb_convert_encoding(urldecode($url), "Windows-1251", "auto");
这意味着它将网址转换为Windows-1251
。这很奇怪,但它显示了正确的人物。但是当我在html对象(某些音乐播放器)中插入这个转换后的url时,它不起作用。 Firebug显示错误:
"NetworkError: 404 Not Found - http://domain.com/Test%20-%20????%20?%20????.mp3"
所以不知怎的,我得到了问号,而不是一个正确的网址。 urlencode
无效。
文件本身为utf-8
。
我对所有这些东西感到困惑。这里有解决方案吗?
答案 0 :(得分:1)
不完全确定您正在寻找的答案,但其原始编码为Windows-1251,您可以查看iconv:
var_dump(detect_encoding($url);
function detect_encoding($string) {
static $list = array('utf-8', 'windows-1251');
foreach ($list as $item) {
$sample = iconv($item, $item, $string);
if (md5($sample) == md5($string))
return $item;
}
return null;
}
此网站也非常有用:Universal Cyrillic Decoder
答案 1 :(得分:1)
解决。
只需单独取出文件名并rawurlencode
即可。