无法读取带有 d3.dsv 的 "latin1" 编码文件的重音
Unable to read accents of "latin1" encoded file with d3.dsv
我有一个 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
您的第一个片段:d3-fetch 函数 d3.dsv
在 fetch
的结果上使用 response.text()
,它只处理 UTF-8。
您的第二个片段:您尝试获取名为 iso-8859-1
的文件,该文件可能不存在。 d3.dsv
中没有接受编码的参数。
一种解决方案是确保服务器具有 UTF-8 文件,而不是 Latin-1 文件。这是最简单的解决方案:到 2022 年,不使用 Unicode 的合法理由很少。
另一种是自己使用fetch
,或者在现在正确的数据上使用d3.buffer
or d3.blob
, then convert the response to UTF-8 yourself, as described in using TextDecoder
(on buffer) or .readAsText
(on blob), and finally use d3.dsvFormat(";").parse
。
我有一个 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
您的第一个片段:d3-fetch 函数 d3.dsv
在 fetch
的结果上使用 response.text()
,它只处理 UTF-8。
您的第二个片段:您尝试获取名为 iso-8859-1
的文件,该文件可能不存在。 d3.dsv
中没有接受编码的参数。
一种解决方案是确保服务器具有 UTF-8 文件,而不是 Latin-1 文件。这是最简单的解决方案:到 2022 年,不使用 Unicode 的合法理由很少。
另一种是自己使用fetch
,或者在现在正确的数据上使用d3.buffer
or d3.blob
, then convert the response to UTF-8 yourself, as described in TextDecoder
(on buffer) or .readAsText
(on blob), and finally use d3.dsvFormat(";").parse
。