我发现了这篇文章:http://ecmanaut.blogspot.ro/2006/07/encoding-decoding-utf8-in-javascript.html
还有很多人推荐这种方法。但unescape(encodeURIComponent(srt))
似乎对我不起作用。我正在尝试使用XMLHttpRequest
转换文件的内容。
在使用unescape(encodeURIComponent(srt))
之前,unicode字符显示为“?”,转换后,所有unicode字符显示为“�”。所以我假设转换失败了。
文件本身用ANSI编码。
这是小提琴:http://jsfiddle.net/9g6zkmof/1/
我需要这个在纯JavaScript中工作。
如果您对OpenSubtitles的字幕存在同样的问题,请阅读this answer。否则,所选答案是正确答案。
由于
答案 0 :(得分:2)
如你所说,它不是用UTF-8编码的:
var path = 'http://dl.opensubtitles.org/en/download/filead/src-api/vrf-bfafe1c11f/sid-85k8neb5gpmo3npqoog00t6c64/1954590765.srt'
var xhr = new XMLHttpRequest();
xhr.open("GET", path, false);
xhr.overrideMimeType('text/plain; charset=iso-8859-1');
xhr.send();
<强> FIDDLE 强>
答案 1 :(得分:0)
我发送了一封电子邮件给OpenSubtitles的网站管理员,他回答说我刚刚在4天前发布了他的一篇帖子:
http://forum.opensubtitles.org/viewtopic.php?f=1&t=14992&p=30697#p30697
现在,您可以按照您想要的任何编码请求任何字幕,服务器将使用iconv()
对其进行编码。这不是100%,因为iconv()
也可能失败,但这是最好的情况。
所以这个链接:
http://dl.opensubtitles.org/en/download/filead/src-api/vrf-bfafe1c11f/sid-85k8neb5gpmo3npqoog00t6c64/1954590765.srt
现在变为:
http://dl.opensubtitles.org/en/download/subencoding-utf8/file/1954590765
并且您收到以UTF-8编码的字幕文件。