在 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. tensorflow 如何限制显存大小

    Python在用GPU跑模型的时候最好开多进程,因为很明显这种任务就是计算密集型的. 用进程池好管理,但是tensorflow默认情况会最大占用显存,尽管该任务并不需要这么多,因此我们可以设置显存的按 ...

  2. lnmp环境的使用

    lnmp环境的使用 安装的软件都安装到了:/usr/local 管理nginx service nginx start|stop|restart|reload 管理mysql 直接执行mysql即可登 ...

  3. xtu数据结构 G. Count the Colors

    G. Count the Colors Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Jav ...

  4. ubuntu ssh连接服务器保持长时间不断

    方法: ssh -o serveraliveinterval=60 username@ip

  5. BZOJ 2154 Crash的数字表格 ——莫比乌斯反演

    求$\sum_{i=1}^n\sum_{j=1}^n lcm(i,j)$ 枚举因数 $ans=\sum_{d<=n} F(d) * d$ $F(d)$表示给定范围内两两$\sum_{gcd(i, ...

  6. bzoj3211 花神游历各国 线段树,势能分析

    [bzoj3211]花神游历各国 2014年3月17日2,7230 Description   Input   Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input ...

  7. 空指针问题(java.lang.NullPointerException)

    在Java中对值为null的指针调用任何方法,就会引发空指针异常(java.lang.NullPointerException).空指针异常绝对是Java中最难查找和调试的一种异常,你永远无法得到任何 ...

  8. ADO:防止更新的数据含有单引号而出错

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] public void Update( string au_lname, string zip,string au ...

  9. LL(1)语法分析器 //c++实现

    #include<iostream> #include<string> #include<map> #include<vector> #include& ...

  10. BZOJ 2957 楼房重建 (线段树)

    题目链接  楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来.那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数. 我们可以用线段树维护 设t[i]为如果只看这个区间,可以 ...