java读写文件避免中文乱码

合集下载

Java读取TXT文本文件乱码解决方案

Java读取TXT文本文件乱码解决方案

Java读取TXT文本文件乱码解决方案今天在解析一个文本文件的时候出现了乱码,以前从未遇到,花了点时间解决了,在此总结一下:首先,先看一下解析的代码:private String[] getProjectData(File file){String[] data = null;try {BufferedReader br = new BufferedReader(new FileReader(file));String str = br.readLine();data = str.split(”\t”);br。

close();}catch(FileNotFoundException e) {e.printStackTrace();}catch(IOException e) {e。

printStackTrace();}return data;}这个方法很简单,就是获取txt文件中的一行数据,然后转换为数组,我这个文本中只有一行。

就这种情况下获取到的str是乱码,我想出现乱码肯定是字符集编码的问题,然后自己新建了一个文本文档测试没有问题(开始用的文本时别的程序导出的),所以我估计是开始那个txt文件编码的问题,查看发现是Unicode编码(如何查看txt的编码呢,教你一个笨笨的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格式),问题就出现在这里.问题找到了就好解决了,修改代码为:private String[] getProjectData(File file){String[] data = null;try {BufferedReader br = new BufferedReader(newInputStreamReader(new FileInputStream(file),”UTF—16"));String str = br。

readLine();data = str。

【JAVA】读取txt文件中文乱码问题

【JAVA】读取txt文件中文乱码问题

博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
【 JAVA】读取 txt文件中文乱码问题
一般是由于编码和解码方式不同,统一一下即可。 1、编码:将txt默认的ANSI转为UTF-8 有两种方法: (1、打开txt文件,另存为,选择编码方式 (2、使用Notepad++,Encoding菜单
2、解码: 将FileInputStream函数的第二个参数(tName)设为"UTF-8"
注意:这儿还有个比较好玩的地方,就是第一个字符前会显示问号。 为什么呢? 因为Windows是使用BOM来标记文本文件的编码方式的,但是这个标记无法被Java识别。 所以我们的编码方式应该改为 UTF-8 without BOM

java读取properties文件中文乱码的解决方法

java读取properties文件中文乱码的解决方法
java读取properties文件中文乱码的解决方法收藏
java读取properties文件时,如果包含中文,那么该中文字段读出为乱码。这是因为java中文件大多以UTF-8或GBK的方式保存,而java程序在读出properties文件时则采用unicode编码方式,这样自然会导致中文乱码情况的发生。
}
public String getProperties(String key) throws Exception{
is=new FileInputStream(propPath);
prop.load(is);
return prop.getProperty(key);
}
}
public class TestPorperty {
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at ng.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
prop.load(is);

java中文乱码解决方法

java中文乱码解决方法

java中文乱码解决方法Java是一种强大的编程语言,它可以为不同的计算机平台提供稳定可靠的软件开发环境,它也在处理文本文件上有着独特的优势。

但在使用Java处理中文文件时,乱码就成为了一个重大问题,如果不能很好地处理乱码,会影响到Java应用软件的正常使用。

本文给出了3种常用的Java中文乱码解决方案,以帮助相关开发人员快速解决乱码问题。

首先,使用正确的字符集编码将文件保存为指定的编码格式,这可以有效防止中文乱码的出现。

首先,应确保将文本文件保存为国际标准字符集UNIX UTF-8编码。

这是一种任何平台及系统都能够正确执行的字符集,比如Windows系统可以使用ANSI编码,但是在Linux 中会出现乱码问题。

其次,在字符编码方面应尽量使用UTF-8,它可以支持多种字符集,可以为用户提供更丰富的文本文件内容。

此外,为了完全解决Java中文乱码问题,开发者可以利用相关的API来设置不同的编码格式。

例如,开发者可以使用System.setProperty()方法来指定程序的编码格式,即指定文件使用的字符集。

以下是一个简单的示例代码:System.setProperty(file.encoding UTF-8另外,Java还提供了更加强大的控制功能。

它可以为用户提供一种可以自行设置和识别字符集的文件编码类。

例如,使用InputStreamReader和OutputStreamWriter类,开发者可以指定输入和输出的字符集,以进行不同的输入和输出操作,从而得到更加准确的结果,避免出现乱码问题。

以下是一个使用InputStreamReader 和OutputStreamWriter设置字符集的简单示例:InputStreamReader isr = new InputStreamReader(inputStream, UTF-8OutputStreamWriter osw = newOutputStreamWriter(outputStream, UTF-8最后,用户还可以使用相关的第三方软件来解决Java中文乱码问题,这些软件专门设计用于解决文本文件字符集编码的问题,可以自动识别文件的编码格式,并将其转换成指定的编码格式。

Java Web项目开发中的中文乱码问题与对策

Java Web项目开发中的中文乱码问题与对策

Java Web项目开发中的中文乱码问题与对策在Java Web项目开发中,遇到中文乱码问题是比较常见的。

中文乱码问题的根本原因是Java中使用的是Unicode编码,而在HTTP传输过程中使用的是ISO-8859-1编码,这两种编码不兼容,导致中文字符无法正确显示。

中文乱码问题通常会出现在以下几个方面:1. 数据库存储:如果数据库的字段类型是varchar而不是utf8类型,就无法正确存储中文字符,导致乱码问题。

解决办法是将数据库的字段类型修改为utf8。

2. 请求参数传递:如果浏览器向服务器发送的请求参数中包含中文字符,而服务器没有正确解析编码,就会导致中文字符乱码。

解决办法是在服务器端对请求参数进行编码转换,通常使用的是UTF-8编码。

3. 响应结果显示:如果服务器向浏览器返回的响应结果中包含中文字符,而没有正确设置响应头的编码,浏览器无法正确解析中文字符,就会显示乱码。

解决办法是在服务器端设置响应头的Content-Type为text/html;charset=UTF-8。

针对中文乱码问题,我们可以采取以下对策:1. 统一字符编码:在整个项目中都使用UTF-8编码,包括数据库、服务器、浏览器等各个环节,确保数据的正确传输和显示。

2. 在项目中添加字符编码过滤器:通过在web.xml文件中配置字符编码过滤器,可以对请求和响应的字符编码进行统一处理,确保中文字符能够正确传输和显示。

5. 在文件上传和下载时进行编码转换:在上传和下载文件时,对文件名进行编码转换,通常使用的是URL编码,确保文件名中的中文字符能够正确传输和显示。

遇到中文乱码问题时,需要在不同的环节进行编码转换和设置,确保中文字符能够正确传输和显示。

通过统一字符编码、设置响应头的字符编码、对请求参数进行编码转换等对策,可以有效解决中文乱码问题,提高项目的可用性和用户体验。

java中文乱码解决方法

java中文乱码解决方法

java中文乱码解决方法1、解决文件中文乱码:1.1、修改文件字符编码:由于不同系统,比如Unix下用GBK格式编辑的文件,在Windows中就会乱码,此时可以使用Notepad++(记事本插件),将文件编码转换为系统默认的utf-8,8为Unicode编码。

1.2、修改系统语言及字符编码:此外,也可以通过改变操作系统的语言及字符编码,这种方法我们可以在控制面板-区域和语言的地方进行修改,再次点击其中的管理,在点击详细设置,这时候就可以看到字符集,将其设置为utf-8。

2、解决程序中文乱码:2.1、使用unicod-8格式编码:在这种情况下,一定要注意程序代码的编码格式,一定要以utf-8格式进行编码,而不是GBK,否则一样会出现乱码。

2.2、设置字符集:有时候,可以在程序中设置语言字符集,例如:response.setContentType("text/html;charset=utf-8");用于普通的JSP页面编码设置,也可以在web.xml中设置characterEncoding3、修改Tomcat的默认编码:可以修改tomcat的server.xml文件,将其默认编码为utf-8,在相应的位置加上URIEncoding="utf-8"。

4、前端乱码解决方法:也可以到浏览器中去修改编码,比如:Firefox浏览器中,可以按Ctrl + U,Chrome可以按Ctrl + U,IE下可以第一个菜单栏中点击View,然后选择Encoding,转换为相应的编码即可。

5、对数据库使用正确的编码:在不同的数据库中当我们有gbk的字符编码的时候,一定要创建数据库时候指定好字符编码,让数据库与整个程序保持一致,如果仅仅程序有编码时,数据库没有则容易出现乱码。

总之,我们在解决Java中文乱码的问题是要以系统- web页面-程序-数据库为关键点进行检查,以确保编码的一致性。

java读取文件里面部分汉字内容乱码的解决方案

java读取文件里面部分汉字内容乱码的解决方案

java读取⽂件⾥⾯部分汉字内容乱码的解决⽅案java读取⽂件⾥⾯部分汉字内容乱码读取⼀个txt⽂件,到代码中打印出来,发票有部分汉字的内容是乱码的。

我开始的⽅式是这样的, 如下,这是完全错误的,汉字是两个字节的,如果每次读固定个字节,可能会把汉字截断。

就会出现部分乱码的情况。

package susq.path;import java.io.File;import java.io.FileInputStream;import java.io.IOException;/*** @author susq* @since 2018-05-18-19:28*/public class WrongMethodReadTxt {public static void main(String[] args) throws IOException {ClassLoader classLoader = WrongMethodReadTxt.class.getClassLoader();String filePath = classLoader.getResource("").getPath() + "/expect1.txt";System.out.println(filePath);File file = new File(filePath);try (FileInputStream in = new FileInputStream(file)) {byte[] bytes = new byte[1024];StringBuffer sb = new StringBuffer();int len;while ((len = in.read(bytes)) != -1) {sb.append(new String(bytes, 0, len));}System.out.println(sb.toString());}}}如果存在汉字,就要按字符的⽅式读取:package susq.path;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;/*** @author susq* @since 2018-05-18-17:39*/public class SysPath {public static void main(String[] args) throws IOException {ClassLoader classLoader = SysPath.class.getClassLoader();String filePath = classLoader.getResource("").getPath() + "/expect1.txt";System.out.println(filePath);File file = new File(filePath);try (BufferedReader br = new BufferedReader(new FileReader(file))) {StringBuffer sb = new StringBuffer();while (br.ready()) {sb.append(br.readLine());}System.out.println(sb);}}}java的IO流读取数据时,解决中⽂乱码,还有个别中⽂乱码问题情况:⽤IO流读取数据时,若是不设置编码格式,出来的数据未必是我们所要的解决:读取数据时,设置编码代码:(字符串设置对应的编码即可,但这种⽅式,会导致个别中⽂乱码,貌似是byte[]导致的)//这⾥我通过socket⽅式,获取流,并读取数据//代理需要外置配置(代理配置需要判断,若有配置,则添加,若⽆配置,则不添加)Socket socket = new Socket("192.168.99.100", 80);String url = "GET " + href + " HTTP/1.1\r\n\r\n";socket.getOutputStream().write(new String(url).getBytes());InputStream is = socket.getInputStream();byte[] bs = new byte[1024];int i;StringBuilder str = new StringBuilder();while ((i = is.read(bs)) > 0) {//⼀定要加编码,不然,在输出到⽂件时,部分数据会乱str.append(new String(bs, 0, i,"UTF-8"));//由于socket读取不会断开,所以只能⾃断开连接读取if(new String(bs, 0, i,"UTF-8").contains("</html>")){break;}}解决个别中⽂乱码问题:代码://代理需要外置配置(代理配置需要判断,若有配置,则添加,若⽆配置,则不添加)Socket socket = new Socket("192.168.99.100", 80);//Socket socket = new Socket();String url = "GET " + href + " HTTP/1.1\r\n\r\n";socket.getOutputStream().write(new String(url).getBytes());InputStream is = socket.getInputStream();//解决个别中⽂乱码StringBuilder str = new StringBuilder("");InputStreamReader isr = new InputStreamReader(is,"UTF-8");BufferedReader br = new BufferedReader(isr);String line = null;while ((line = br.readLine()) != null) {str.append(line + "\n");if(line.contains("</html>")){break;}}以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

Java读取TXT文本文件乱码解决方案

Java读取TXT文本文件乱码解决方案

Java读取TXT文本文件乱码解决方案今天在解析一个文本文件的时候出现了乱码,以前从未遇到,花了点时间解决了,在此总结一下:首先,先看一下解析的代码:private String[] getProjectData(File file){String[] data = null;try {BufferedReader br = new BufferedReader(new FileReader(file));String str = br.readLine();data = str.split("\t");br.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return data;}这个方法很简单,就是获取txt文件中的一行数据,然后转换为数组,我这个文本中只有一行。

就这种情况下获取到的str是乱码,我想出现乱码肯定是字符集编码的问题,然后自己新建了一个文本文档测试没有问题(开始用的文本时别的程序导出的),所以我估计是开始那个txt文件编码的问题,查看发现是Unicode编码(如何查看txt的编码呢,教你一个笨笨的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格式),问题就出现在这里。

问题找到了就好解决了,修改代码为:private String[] getProjectData(File file){String[] data = null;try {BufferedReader br = new BufferedReader(newInputStreamReader(new FileInputStream(file),"UTF-16"));String str = br.readLine();data = str.split("\t");br.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return data;}使用文件流读取,转换编码为“UTF-16”,这样乱码问题就解决了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、JAVA读取文件,避免中文乱码。

/**
* 读取文件内容
*
* @param filePathAndName
* String 如c:\\1.txt 绝对路径
* @return boolean
*/
public static String readFile(String filePathAndName) {
String fileContent = "";
try {
File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}
return fileContent;
}
2、JAVA写入文件,避免中文乱码。

public static void writeFile(String filePathAndName, String fileContent) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8");
BufferedWriter writer=new BufferedWriter(write);
//PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));
//PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));
writer.write(fileContent);
writer.close();
} catch (Exception e) {
System.out.println("写文件内容操作出错");
e.printStackTrace();
}
}
我试过写入的时候用
1、PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));
2、PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));
都不行。

以上代码经过运行可以避免中文乱码,关键是要编码转换。

相关文档
最新文档