Mac下文件编码修改问题
2018-01-17 12:03
162 查看
最近在使用python3做NLP中文文本分类时,遇到如下非常恼人的问题,一开始没有在意,后来忍无可忍弄了一天。
拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符
GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。
Unicode编码:包含世界上所有的字符,是一个字符集。
UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。
看见下边这个编码了吗,他可以轻松实现编码转换,转化完还没有乱码,唯一的缺点就是需要手动解决,小数量的还可以,数量较大的时候还是选择下面这个方法吧~
enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
iconv 转换,iconv的命令格式如下:
Mac下安装
检查文件编码
转换文件编码
-L zh_CN 一般也可以不用指定。
批量转换
以上这种方法,我最后成功的只有第一种,无奈,以后在解决吧~
对编码终于有了初步了解了哈哈,已经比以前淡定多了,出了问题不久解决吗,哈哈哈哈哈
多谢
https://segmentfault.com/a/1190000007073776?_ea=1252426
http://blog.csdn.net/csywwx2008/article/details/17137097
UnicodeDecodeError: 'utf8' codec can't decode byte 0xcc in position 468: invalid continuation byte
分析原因
原代码段
with open(filename,"r",encoding='utf-8') as f: content = f.read()
主要原因
和下载的搜狗语料库本身的编码有关系,本身编码是ASCII码,而我们需要以UTF-8来读取,这就超出python3的能力了就会报错。如何查看编码
有很多命令可以用于查看,比如enca还有万能的VIM,但是我比较喜欢使用file命令,如下显示的是UTF-8格式的。$ file Chinesestopword.txt Chinesestopword.txt: UTF-8 Unicode text
插播:常用编码
ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符
GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。
Unicode编码:包含世界上所有的字符,是一个字符集。
UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。
解决办法
说出来这个解决办法,不知道是因为我电脑的原因,还是我电脑的原因,折腾了好久好久,以下提供几个方法,供大家参考,此时此刻感叹win有win系统的好啊!win系统下暴力解决
一个小小的记事本居然能完成Mac完不成的任务,用了这个方法,我的Mac坟头草都好几米了,方法见下图:文件->另存为看见下边这个编码了吗,他可以轻松实现编码转换,转化完还没有乱码,唯一的缺点就是需要手动解决,小数量的还可以,数量较大的时候还是选择下面这个方法吧~
使用命令工具
在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式:set fileencoding=utf-8
enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename
iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile iconv -f UTF-8 -t GBK file1 -o file2 #将一个UTF-8 编码的文件转换成GBK编码
更好的傻瓜型命令行工具enca
它不但能智能的识别文件的编码,而且还支持成批转换。Mac下安装
brew install enca
检查文件编码
enca -L zh_CN ip.txt Simplified Chinese National Standard; GB2312
转换文件编码
$enca -L 当前语言 -x 目标编码 文件名
-L zh_CN 一般也可以不用指定。
批量转换
enca -x utf-8 *
总结
做数据挖掘的人绝不轻易低头,可能最近太偏执了,浪费了两天,其实只要换个思路,这台电脑不行,换个win试试也许许多问题都迎刃而解,学习做项目还是需要灵活一些~以上这种方法,我最后成功的只有第一种,无奈,以后在解决吧~
对编码终于有了初步了解了哈哈,已经比以前淡定多了,出了问题不久解决吗,哈哈哈哈哈
多谢
https://segmentfault.com/a/1190000007073776?_ea=1252426
http://blog.csdn.net/csywwx2008/article/details/17137097
相关文章推荐
- Mac下文件编码修改问题
- Emacs复制粘贴乱码问题以及修改当前文件编码
- JSP 修改Tomcat配置文件解决中文编码问题!
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- 批量修改文件的编码格式-问题来自于用Source Insight打开项目时中文部分出现乱码
- mac 下管理员无权限修改文件问题以及rootLess内核保护开关
- zendstudio文件编码修改问题
- zendstudio文件编码修改问题
- 编码问题,修改mysql ini文件无效的一种解决方案
- 怎么用记事本修改文件的编码问题
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
- TekNote #1: 在Mac(Snow Leopard)下,用Maven运行测试(mvn test)时,DBUnit 读文件的编码问题(file.encoding)
- 完美解决mac环境使用sed修改文件出错的问题
- 【转】zendstudio文件编码修改问题
- IntelliJ IDEA 主题、字体、编辑区主题、文件编码修改、乱码问题
- mac下如何修改文件权限(针对Cocoapod安装成功使用时一直提示command not found问题)
- zendstudio文件编码修改问题
- 特定条件下批量解压文件改变编码,顺便修改.so.0找不到等一些小问题
- myeclipse修改文件编码问题---乱码解决方法
- vs升级到2015后修改文件编码解决乱码问题