关于文件读取时编码问题

  1. /**
  2. * 判断文件的编码格式
  3. * @param fileName :file
  4. * @return 文件编码格式
  5. * @throws Exception
  6. */
  7. public static String codeString(String fileName) throws Exception{
  8. BufferedInputStream bin = new BufferedInputStream(
  9. new FileInputStream(fileName));
  10. int p = (bin.read() << 8) + bin.read();
  11. String code = null;
  12. switch (p) {
  13. case 0xefbb:
  14. code = "UTF-8";
  15. break;
  16. case 0xfffe:
  17. code = "Unicode";
  18. break;
  19. case 0xfeff:
  20. code = "UTF-16BE";
  21. break;
  22. default:
  23. code = "GBK";
  24. }
  25. return code;
  26. }
时间: 2024-10-31 09:55:31

关于文件读取时编码问题的相关文章

文件-读取与编码检测

文件存放在硬盘是以二进制方式存储,读取出来需要对其根据字符编码表进行转换,python3默认以utf-8编码. utf8三个字节一个字符,gbk两个字节一个字符 文件读取 以utf-8编码打开gbk存储的文件并读取内容 f=open(file='test.txt',mode='r',encoding='utf-8') data=f.read() f.close() print(data) file:需打开的文件 mode:打开方式 encoding:打开的编码格式 以gbk方式打开即可正常读取

使用Scrapy命令行工具【导出JSON文件】时编码设置

Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 使用scrapy命令行工具建立了爬虫项目(startproject),并使用scrapy genspider建立了爬虫,用于抓取某中文门户网站首页的 新闻标题及其链接,全程都在虚拟环境(virtualenv)中执行. 使用scrapy crawl执行爬虫程序并导入一个json文件,此时可以看到,命令行窗口显示的 新闻标题是中文,但在打开导出的json文件时,其新闻标题显示为以

Spring-Batch CSV文件读取时的注意点

按照Spring Batch 之 Sample(CSV文件操作)(四) 的方式配置好csvItemReader, 发现读入的数据很是奇怪,通过修改配置文件发现, commit-interval="1" 的时候,例程是没有问题的.如果大于1,例如设为50,则会把第50条数据,读50遍进来. 跟踪代码org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper的getBean()方法后发现,当配置文件如下时 &l

本地文件读取(csv,txt)时字符编码问题解决

今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现读取的csv文件内容中文全为乱码.啊啊啊,好坑.于是看了下别人写的读取csv文件的代码,果然是没有设置字符编码.通过字符读取文件,转为字节流一定要进行字符编码设置,否则跑到测试环境或生产环境会使用本地默认字符集,那就坑大了. 问题代码: BufferedReader in = new Buffere

文件读取 FILE

需要了解的概念 [数据流][缓冲区(Buffer)][文件类型][文件存取方式][借助文件指针读写文件] 需要理解的知识点包括:数据流.缓冲区.文件类型.文件存取方式 1.1 数据流: 指程序与数据的交互是以流的形式进行的.进行C语言文件的存取时,都会先进行"打开文件"操作,这个操作就是在打开数据流,而"关闭文件"操作就是关闭数据流 1.2 缓冲区(Buffer): 指在程序执行时,所提供的额外内存,可用来暂时存放做准备执行的数据.它的设置是为了提高存取效率,因为内

html外部文件读取/写入

1.文件的读取 外部文件读取控件: <input type="file" id="file_jquery" onchange="file_jquery(this.id)"/> 调用函数: function file_jquery(id){ var a = $("#"+id); var selectedFile = $("#"+id)[0].files[0]; console.log(a); co

关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法

转载:http://www.floatinglife.cn/关于heritrix安装配置时出现必须限制口令文件读取访问 最近开始写一个RSS聚合程序,需要爬虫支持,于是就整来heritrix,没想到,这东西还挺拽,费了老衲好几个小时来安装配置这个heritrix.最后经过不懈努力,终于起来了,具体步骤如下:你如果在网上找相关配置,大多数都是讲先修改conf/properties文件的用户名和密码以及修改jmxremote.password.template,然后将其改名复制到heritrix根目

boost读取utf-8编码xml文件

参照:http://www.cnblogs.com/qicosmos/p/3555668.html 解决boost读取utf-8 xml文件乱码问题. 代码如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 void io::read(const string& file) {     try     {         wifstream f(file);         locale utf8Locale(locale("chs&quo

如何解决读取到文件末尾时碰到EOF导致的重复输出或者无用输出

当读取到文件末尾时,会碰到EOF,如何解决呢?    方法一:我们可以通过(ch=fin.get())!=EOF来结束读取,这样就不会像eof()那样碰到EOF之后,还会再进行一次读取,导致输出一个无用的结束符或者重复前一字符 //a.txt中的内容为abc #include <iostream> #include <fstream> using namespace std; int main() { ifstream fin("a.txt"); char ch