在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题。

怎么解决呢?

1. 乱码问题

使用 d3.csv 读取 xxx.csv 文件时。假设 xxx.csv 文件使用的是 UTF-8 编码,不会有什么问题。

当然,个人觉得尽量使用 UTF-8 编码,能够在同一编码内使用各国文字。

可是。假设 xxx.csv 文件使用的是 utf-8 编码,使用 Microsoft Excel 打开的时候,可能会出现乱码,由于国内的 Excel 默认使用 GB2312 打开。并且在打开的时候不能选择编码( OpenOffice 没有这个问题 )。

当然,在 Excel 中也是有方法能够用 utf-8 编码打开的。

详细的方法能够到网上去查。

GB2312 和 GB18030 等是国内经常使用的编码,假设 CSV 文件用这两种编码保存。那么用 Excel 可直接打开而不出现乱码。可是。假设用了。用 d3.csv 读取的时候。又会在可视化的时候出现乱码,这正是问题所在。

2. 解决方法

解决方法非常easy,可是假设不知道的话。是非常费心的。

一言以蔽之,解决方法须要: 在 D3 中可以手动设定用什么编码读取文件。

在 【

p=430">进阶系列 1.0】 和 【进阶系列 1.1】中,使用了 d3.csv 和 d3.tsv 两个函数,也提到了。它们的差别不过分隔符不同。也提到了,它们实质上都是
d3.dsv 函数,即:

  d3.csv = d3.dsv(",", "text/csv");
d3.tsv = d3.dsv(" ", "text/tab-separated-values");

在 d3.dsv 的第二的參数中,事实上能够加入编码的,形如:

var csv = d3.dsv(",", "text/csv;charset=gb2312");
var tsv = d3.dsv(" ", "text/tab-separated-values;charset=gb2312");

如此,你能够定义自己的 csv 和 tsv 读取函数。编码如上加入就可以。用法形如:

csv("xxx.csv",function(error,csvdata){

}

tsv("xxx.tsv",function(error,tsvdata){

}

如此,乱码的问题就可以解决。

谢谢阅读。


文档信息


【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法的更多相关文章

  1. 【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取

    在入门系列的教程中.我们经常使用 d3.json() 函数来读取 json 格式的文件.json 格式非常强大.但对于普通用户可能不太适合,普通用户更喜欢的是用 Microsoft Excel 或 O ...

  2. PHP导出CSV文件出现乱码的解决方法

    在做项目时碰到使用外语的情况下,我们就会使用UTF-8编码.但是,在用PHP导出CSV文件时,如果写入的数据是使用UTF-8编码的日语.韩语之类的外文,就会出现乱码. 要解决PHP生成CSV文件的乱码 ...

  3. 【 D3.js 进阶系列 】 进阶总结

    进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟 ...

  4. 【 D3.js 进阶系列 — 4.0 】 绘制箭头

    转自:http://www.ourd3js.com/wordpress/?p=660 [ D3.js 进阶系列 — 4.0 ] 绘制箭头 发表于2014/12/08 在 SVG 绘制区域中作图,在绘制 ...

  5. python之模块csv之 读取CSV文件(reader和DictReader2个方法)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #读取CSV文件(reader和DictReader2个方法) import csv #csv文件,是一种常用 ...

  6. selenium3 文件系列之------ opencsv读取csv文件

    最近在学习selenium有关文件的读取测试,今天先总结一下如何读取csv文件.CSV的定义是与逗号分隔的值(Comma-Separated Values),在Java中需要用到第三方lib去处理读取 ...

  7. Python读取 csv文件中文乱码处理

    需求:按行解析读取csv文件存入关系型数据库——主要是中文字体解析:遇到的问题:直接解析出来的数据为list形式,而且编码格式为unicode;解决问题:前提了解: 中文编码的规则 —— GB2312 ...

  8. pandas读取大文件时memoryerror的解决办法

    再用pd.read_csv读取大文件时,如果文件太大,会出现memoryerror的问题. 解决办法一:pd.read_csv的参数中有一个chunksize参数,为其赋值后,返回一个可迭代对象Tex ...

  9. 【 D3.js 进阶系列 — 1.1 】 其它表格文件的读取

    CSV 表格文件是以逗号作为单元分隔符的,其他还有以制表符 Tab 作为单元分隔符的 TSV 文件,还有人为定义的其他分隔符的表格文件.本文将说明在 D3 中怎样读取它们. 1. TSV 表格文件是什 ...

随机推荐

  1. 设置 mysql事物隔离级别

    SET [GLOBAL | SESSION] TRANSACTION transaction_property [, transaction_property] ... transaction_pro ...

  2. World Finals 2017

    Need for Speed   Sheila is a student and she drives a typical student car: it is old, slow, rusty, a ...

  3. CSU-1803: 2016 ,同余定理!

    int main() {     int n,m;     while(~scanf("%d%d",&n,&m))     {         int r1=n/2 ...

  4. 九度oj 题目1031:xxx定律 题目1033:继续xxx定律

    题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止.    请计算需要经过几步才能将n变到1,具体可见样例. 输入:     ...

  5. javascript数组学习1

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. DDLog-不同颜色打印信息

    (一)下载安装 1.安装插件 XcodeColors Github 链接:https://github.com/robbiehanson/XcodeColors 打开XcodeColors项目,编译即 ...

  7. 【bzoj2229】[Zjoi2011]最小割 分治+网络流最小割

    题目描述 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中,则称这个划分 ...

  8. HDU——1045Fire Net(最大匹配)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  9. BZOJ 1861 [Zjoi2006]Book 书架 ——Splay

    [题目分析] 模板题目. 首尾两个虚拟结点,十分方便操作. [代码] #include <cstdio> #include <cstring> #include <cma ...

  10. 刷题总结——二叉苹果树(ssoj树形dp+记忆化搜索)

    题目: 题目背景 URAL:http://acm.timus.ru/problem.aspx?space=1&num=1018 题目描述 有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说 ...