精华内容
下载资源
问答
  • java读取文件乱码

    2021-02-12 15:48:45
    List lines=new ArrayList();BufferedReaderbr=newBufferedReader(newFileReader(fileName));Stringline=null;while((line=br.readLine())!=null){lines.add(line);...Java的I/O类处理如图:Reader ...

    List lines=new ArrayList();

    BufferedReader br = new BufferedReader(new FileReader(fileName));

    String line = null;

    while ((line = br.readLine()) != null) {

    lines.add(line);

    }

    br.close();

    Java的I/O类处理如图:

    Reader 类是 Java 的 I/O 中读字符的父类,而 InputStream 类是读字节的父类,InputStreamReader 类就是关联字节到字符的桥梁,它负责在 I/O 过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它由 StreamDecoder 去实现,在 StreamDecoder 解码过程中必须由用户指定 Charset 编码格式。值得注意的是如果你没有指定 Charset,将使用本地环境中的默认字符集,例如在中文环境中将使用 GBK 编码。

    46ec25f88dc15a8fb2795fe0b09b2bf2.png

    总结:Java读取数据流的时候,一定要指定数据流的编码方式,否则将使用本地环境中的默认字符集。

    public static List fileinput() {

    // TODO Auto-generated method stub

    List list = new ArrayList();

    try {

    String fileName = "C://Users/Administrator/Desktop/备份/bustno.txt";

    StringBuffer sb = new StringBuffer("");

    InputStreamReader sr = new InputStreamReader(new FileInputStream(fileName),"UTF-8");

    BufferedReader br = new BufferedReader(sr);

    String str = null;

    while ((str = br.readLine()) != null) {

    String[] firstSplit = str.split("\n");

    int recordNum = firstSplit.length;

    for(int i=0; i < recordNum;i++){

    String[] one = str.split("\\|");

    Organ organ = new Organ();

    organ.setParentID(0);

    organ.setOrganValue(one[0].substring(0, 3));

    organ.setOrganName(one[1]);

    list.add(organ);

    }

    }

    br.close();

    sr.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.print("read succeeded");

    return list;

    }

    list结果集分组:

    private static void fenzu(String filepath) throws IOException, ParseException {

    // TODO Auto-generated method stub

    SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM");

    List valueList = new ArrayList();//将结果集转化为二维数组

    StringBuffer sb = new StringBuffer("");

    InputStreamReader sr = new InputStreamReader(new FileInputStream(filepath),"UTF-8");

    BufferedReader br = new BufferedReader(sr);

    String str = null;

    List list = new ArrayList();

    while ((str = br.readLine()) != null) {

    String[] firstSplit = str.split("\n");

    int recordNum = firstSplit.length;

    for(int i=0; i < recordNum;i++){

    String[] one = str.split("\t");

    Canal canalone = new Canal();

    canalone.setCanal(one[0]);

    canalone.setSa_tx_m(one[1]);

    canalone.setCr_tx_amt(one[2]);

    list.add(canalone);

    }}

    System.out.print("list size :"+list.size()+ "\n");

    //结果集分组

    List uniqueList = new ArrayList();//存放Canal个数

    for (int j = 0; j < list.size(); j++) {

    Canal canal = list.get(j);

    if (!uniqueList.contains(canal.getCanal()))

    {

    System.out.print("uniqueList not contains : " +canal.getCanal().toString() + "\n" );

    String[][] b = new String[2][12];//String[0][]为canal,长度为1,String[1][]对应每个月的数值

    b[0][0] = canal.getCanal();//canal

    String amtValue = list.get(j).getCr_tx_amt();// 金额

    Calendar Date = Calendar.getInstance();

    Date.setTime(simpleDate.parse(canal.getSa_tx_m()));

    int month = Date.get(Calendar.MONTH); // 因为数组的编号要减一,这里不用加一

    b[1][month] = amtValue;

    uniqueList.add(canal.getCanal());//将canal种类放在集合里

    valueList.add(b);//将数值集合放在valueList里

    } else {

    for (int k = 0; k < valueList.size(); k++) {

    String[][] b = valueList.get(k);

    if (b[0][0].equals(canal.getCanal())) {

    valueList.remove(k);//先remove结果集里不完整的记录

    System.out.print("has found canal : " + canal.getCanal() + "\n");

    String amtValue = canal.getCr_tx_amt();// 金额

    Calendar Date = Calendar.getInstance();

    Date.setTime(simpleDate.parse(canal

    .getSa_tx_m()));

    int month = Date.get(Calendar.MONTH); // 因为数组的编号要减一,这里不用加一

    b[1][month] = amtValue.toString();

    valueList.add(b);//加了数值再add到分组的list里

    break; //找到就返回

    }

    }

    }

    }

    }

    展开全文
  • 偶然的一次在一本参考书看到 用byte数组存储读取结果,再用byte数组构建字符串,可解决乱码问题,试了一下,果然见效了,于是写了下面一个简单的类,以备用./*** @(#)ReadText.java 17:59 10/09/06* @versoin 0.01* @...

    当使用文件流读取文本文件时,如果遇到中文字符,将会读到乱码.

    偶然的一次在一本参考书看到 用byte数组存储读取结果,再用byte数组构建字符串,可解决乱码问题,试了一下,果然见效了,于是写了下面一个简单的类,以备用.

    /**

    * @(#)ReadText.java  17:59 10/09/06

    * @versoin 0.01

    * @author 林志斌(alvin) 广东 普宁 里湖

    * Copyright ? 1996-2006 zmzx.icpcn.com. All Rights Reserved

    * Use is subject to license terms.

    */

    package alvin.alvinio;

    import java.io.File;

    import java.io.FileInputStream;

    public class ReadText {

    public static String getText(String path) throws Exception {

    FileInputStream in = new FileInputStream(path);

    byte[] bit = new byte[in.available()];

    in.read(bit);

    in.close();

    return (new String(bit));

    }

    //测试函数

    public static void main(String[] a) throws Exception{

    //从磁盘读取文本文件并打印

    String str = ReadText.getText("c:/hello.txt");

    System.out.println(str);

    }

    }

    展开全文
  • java读取json数据出现乱码的代码:(推荐:java视频教程)//从json文件中读取数据StringBuffer stringBuffer = new StringBuffer();try {BufferedReader bufferedReader =new BufferedReader(new InputStreamReader...

    b8fa0559d30db27bc8ec761be8ea3aab.png

    java读取json数据出现乱码的代码:(推荐:java视频教程)//从json文件中读取数据

    StringBuffer stringBuffer = new StringBuffer();

    try {

    BufferedReader bufferedReader =

    new BufferedReader(new InputStreamReader(new FileInputStream(file)));

    String line;

    while((line=bufferedReader.readLine()) != null) {

    stringBuffer.append(line);

    }

    } catch (FileNotFoundException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    //开始解析

    JSONObject jsonObject = new JSONObject(stringBuffer.toString());

    解决

    根据网上描述,将文件设置为UTF-8编码,但是如果保存为UTF-8编码文件,会在文件头中多上3字节标识编码类型的数据,而导致JSONObject对象解析失败,原因:不是以{开头。

    思路:我们用编辑其打开,UTF-8编码格式正常显示,然后使用二进制编辑工具,删除文件头的UTF-8标识EF BB BF,然后在代码中,使用InputStreamReader让数据从字节流到字符流的过程中使用UTF-8编码BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));

    更多java知识请关注java基础教程栏目。

    展开全文
  • Java读取properties文件中文乱码

    千次阅读 2021-02-12 18:14:54
    Java读取properties文件中文乱码之前读取properties配置文件时候全都是英文或者数字之类的,最近项目有个需求要properties配置文件中有中文字符存在,那么读取java properties文件的时候如果value是中文,结果出现...

    Java读取properties文件中文乱码

    之前读取properties配置文件时候全都是英文或者数字之类的,最近项目有个需求要properties配置文件中有中文字符存在,那么读取java properties文件的时候如果value是中文,结果出现读取乱码的问题。

    问题分析:开始以为是文件保存编码问题,我当前项目开发工具使用的Idea,设置有全局编码UTF-8,这个文件查看了也是UTF-8编码,但取出数据是乱码;后来放到eclipse中所有的文件编码都修改成utf8,问题依然存在;把内容复制到notepad++进行utf8编码转换,问题依旧;上网搜索有人提议重写properties类或者用jdk自带的编码转换工具,嫌麻烦而且凭感觉jdk开发者不可能不考虑东亚几国的字符编码问题;因为properties文件操作的代码是那来之前的代码,分析其代码后,发现其用的是字节流来读取文件,具体代码如下:

    Properties properties = new Properties();

    InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");

    properties.load(inputStream );

    System.out.println(properties.getProperty("a"));

    因为字节流是无法读取中文的,所以采取reader把inputStream转换成reader用字符流来读取中文。代码如下:

    Properties properties = new Properties();

    InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");

    BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

    properties.load(bf);

    System.out.println(properties.getProperty("a"));

    以上操作之后再次运行已经解决了Java读取properties文件中文乱码问题

    展开全文
  • java读取rtf乱码

    2021-03-21 10:43:38
    1、打开被损坏的文档单击“文件/另存为”菜单,在 “保存类型”列表中,选择“RTF 格式” ,然后单击“保 Word 数据恢复后乱码问题 一、替换格式法 就是把损坏的......" ; (dataObject.GetDataPresent(DataFormats.Rtf)...
  • 之后,添加JAVA代码页可以将乱码转为中文的。用如下语句就可以了,resultName=new String(username.getBytes("ISO-8859-1"),"gbk"); 然后再用resultName就可以了,不过这样的话你下面的String password=property....
  • 小编今天测试读取excel文件,并且取其中的几个单元格作为文件名称的时候,发现文件名出现了乱码,毫无疑问,肯定就是读取excel的时候,取出来就出现了乱码,如图所示 excel原单元格数据,如图所示 首先这里不是中文...
  • java文件读取时发生中文乱码怎么解决发布时间:2020-06-23 09:33:47来源:亿速云阅读:59...最近遇到一个问题,Java读取文本文件(例如csv文件、txt文件等),遇到中文就变成乱码。读取代码如下:List lines=new Arra...
  • 首先,如果你明确的知道使用的编码,那么你可以在读取完毕生成字符串的时候直接指定编码。例如:FileInputStream in = new FileInputStream("aaa.txt");byte[] data = new byte[1024 * 4];StringBuilder sb = new ...
  • 因为这是通用编码,像中国通常使用的GBK、GB2312、Big5等只是针对中文而言,但是对其他文字就不适用了,为了...1.mysql的设置,我的系统字符设置是拉丁文,也是够够的,发现之后要记得修改啊2.java的设置,记得自己在...
  • public static String encodin = "UTF8"public static String encodout = "UTF8"static void writeOutput(String str) {try {FileOutputStream fos = new FileOutputStream("test.txt");Writer out = new OutputStre...
  • InputStream in= new java.io.FileInputStream(file); byte[] b = new byte[3]; in.read(b); in.close(); if (b[0] == -17 && b[1] == -69 && b[2] == -65) System.out.println(file.getName() + ":编码为UTF-8");...
  • 以前的时候发现直接java读取一个excel文件输出里面的字符串会乱码,中文字符不会乱码,但是遇到英文的时候输出会乱码。这个问题太奇怪了。我的表格名字为Shirley.xls。我曾经直接读取excel表格中那个有英文字符串的...
  • //read方法读取一定长度之后,被读取数据就从流中去掉了,所以下次读取仍然从 0开始 String marketName =new String(itemBuf,0,20); //上一交易日日期 dis.read(itemBuf, 0, 8); String lastTradingDay = new ...
  • 这是我写的一个Java课程作业时,遇到的问题。问题描述:我要实现的就是将txt文件中的内容按一定格式读取出来后,存放在相应的数组。我刚开始运行时发现,英文可以实现,但是中文字符就是各种乱码。最后各种检查排错...
  • } } 找到web.xml,加上: encoding org.gridsphere.servlets.SetCharacterEncodingFilter encoding utf-8 encoding encoding /* ◆◆ 评论读取中.... 请登录后再发表评论! ◆◆ 修改失败,请稍后尝试
  • 使用JAVA api读取HDFS文件乱码踩坑 想写一个读取HFDS上的部分文件数据做预览的接口,根据网上的博客实现后,发现有时读取信息会出现乱码,例如读取一个csv时,字符串之间被逗号分割 英文字符串aaa,能正常显示 中文...
  • 数据流图和用例图某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1.每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的...
  • public static voidmain(String[] args) throws IOException {String charsetName= "GBK";String fileName= "data.txt";bufferToTxt(charsetName, fileName);txtToBuffer(charsetName, fileName);...
  • 使用mybatis-plus的QueryWrapper查询数据库,返回的实体中,数据库json类型的字段返回来是乱码的。 问题解决 1、maven升级mysql-connector-java 到5.1.40,还是不行。 2、不用mybatis-plus的查询方法,自己...
  • java 读取oracle中文乱码

    千次阅读 2021-08-09 00:25:47
    java 读取oracle中文乱码[2021-01-30 18:56:41]简介:java oracle中文乱码的解决方法:1、将读到的字符串s,则进行纯手工转码,代码为【new String(s.getByte(A), B)】;2、使用druid对各种数据库驱动做了一层统一的...
  • java读取json数据发生中文乱码的解决方法发布时间:2020-06-21 15:58:48来源:亿速云阅读:268作者:鸽子java读取json数据出现乱码的代码://从json文件中读取数据StringBuffer stringBuffer = new StringBuffer();...
  • 解决javapdf导出文件,中文乱码数据错位的问题推荐教程:《java学习》首先说中文乱码问题,javapdf内部使用的是ISO-8859-1编码,而通常我们的数据库编码是UTF-8或者GBK,如果在javapdf写入之前不进行转码,会出现...
  • java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开,1、转换格就是将受损的Excel XP簿另存格式选为SYLK。如果可以打开受件,只是不能进行各种编辑和打印操作,那么建议首先尝试这种方法。2...
  • Java读取文本文件(例如csv文件、txt文件等),遇到中文就变成乱码。读取代码如下:List lines=new ArrayList();BufferedReader br = new BufferedReader(new FileReader(fileName));String line = null;while ((line ...
  • package ...import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import jav...
  • 很多时候我们需要使用java读取zip的内容,读取zip中的txt(其他文件类似),本文使用java编写了简单的读取zip中txt内容的代码。可以支持GBK或者UTF8编码格式的zip文件,支持zip中的txt文件内容编码格式内容为GBK或者...
  • java数据操作流乱码

    2021-03-17 23:53:03
    = null))// 使用循环来读取获得的数据 { resultData.append(inputLine + "\r\n"); } } in.close(); urlConn.disconnect(); } catch (java.net.UnknownHostException e) {// 未连接网络 e.printStackTrace(); } catch...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,981
精华内容 19,992
关键字:

java读取数据乱码

java 订阅