我有一个csv文件(用分号分隔,所以我使用d3. dsv来读取它)
d3.dsv(";", "Project.csv", function(d) {
console.log(d)
});
但我在口音的地方听到了“”。
我知道文件是“latin_1”编码,所以我尝试了这个:
dsvReader = d3.dsv(";", "iso-8859-1");
dsvReader("Project.csv", function(d) {
console.log(d)
});
但我得到以下错误:
> net::ERR_FILE_NOT_FOUND
> Uncaught (in promise) TypeError: Failed to fetch
1条答案
按热度按时间cetgtptt1#
您的第一个片段:d3-fetch函数
d3.dsv
对fetch
的结果使用response.text()
,它只处理UTF-8。您的第二个片段:您试图获取名为
iso-8859-1
的文件,但该文件可能不存在。d3.dsv
中没有接受编码的参数。一个解决方案是确保服务器上有UTF-8文件,而不是Latin-1文件。这是最简单的解决方案:在2022年,不使用Unicode的正当理由已经很少了。
另一种方法是自己使用
fetch
,或者使用d3.buffer
或d3.blob
,然后自己将响应转换为UTF-8,如Fetching non-utf8 data with XMLHttpRequest中所述,使用TextDecoder
(在缓冲区上)或.readAsText
(在blob上),最后对现在正确的数据使用d3.dsvFormat(";").parse
。