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);
return prop.getProperty(key);
}
}
源文件test.properties内容如下:
view plaincopy to clipboardprint?
name=测试
value=测试值
name=测试
value=测试值
测试用例如下(注:这里利用junit进行相关测试)
at test.TestPorpertyTest.testGetProperties(TestPorpertyTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
public TestPorperty() throws Exception{
prop=new Properties();
}
public String getProperties(String key) throws Exception{
is=new FileInputStrutStream is;//用于读取(.properties)文件
private Properties prop;
private final String propPath="D:\\Documents and Settings\\Administrator\\桌面\\test.properties";
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
Assert.assertEquals("测试值", tp.getProperties("value"));
}
@Test
public void testGetProperties() throws Exception{
TestPorperty tp=new TestPorperty();
Assert.assertEquals("测试", tp.getProperties("name"));
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
这里,先重现一下该问题,然后给出解决方法。
读取properties的方法如下:
view plaincopy to clipboardprint?
public class TestPorperty {
private InputStream is;//用于读取(.properties)文件
private Properties prop;
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
parisonFailure: null expected:<[测试]> but was:<[²âÊÔ]>
at org.junit.Assert.assertEquals(Assert.java:92)
at org.junit.Assert.assertEquals(Assert.java:104)
view plaincopy to clipboardprint?
@Test
public void testGetProperties() throws Exception{
TestPorperty tp=new TestPorperty();
Assert.assertEquals("测试", tp.getProperties("name"));
at ng.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
合集下载

Java读写.properties文件解决中文乱码问题

Java读写.properties文件解决中文乱码问题

Java读写.properties⽂件解决中⽂乱码问题⼀般使⽤到properties配置⽂件,⼀般都是在spring项⽬⾥⾯,直接由框架帮你读,当然,你也得考虑到编码的问题。

但是现在要是要求使⽤Java直接读写properties⽂件,就发现很多的问题,⽐如,我的properties⽂件的编码竟然不是utf-8的。

或者说我压根就没考虑到这个问题。

再⽐如,当properties⽂件⾥⾯有汉⼦的时候,发现读写的汉字乱码了,在我这是因为我的电脑默认编码是gbk,但是读的时候,⼜没有设置编码,搞出的问题。

下⾯直接上代码,看问题。

package com.lxk.propertyFileTest;import java.io.*;import java.util.Properties;/*** 读写properties⽂件测试* <p>* Created by lxk on 2017/4/25*/public class Main {public static void main(String[] args) {Properties prop = new Properties();InputStream in = null;FileOutputStream oFile = null;try {in = new BufferedInputStream(new FileInputStream("D:config.properties"));//prop.load(in);//直接这么写,如果properties⽂件中有汉⼦,则汉字会乱码。

因为未设置编码格式。

prop.load(new InputStreamReader(in, "utf-8"));for (String key : prop.stringPropertyNames()) {System.out.println(key + ":" + prop.getProperty(key));}//保存属性到b.properties⽂件oFile = new FileOutputStream("b.properties", false);//true表⽰追加打开,false每次都是清空再重写prop.setProperty("phone", "10086");//prop.store(oFile, "此参数是保存⽣成properties⽂件中第⼀⾏的注释说明⽂字");//这个会两个地⽅乱码//prop.store(new OutputStreamWriter(oFile, "utf-8"), "汉字乱码");//这个就是⽣成的properties⽂件中第⼀⾏的注释⽂字乱码prop.store(new OutputStreamWriter(oFile, "utf-8"), "lll");} catch (Exception e) {System.out.println(e.getMessage());} finally {if (in != null) {try {in.close();} catch (IOException e) {System.out.println(e.getMessage());}}if (oFile != null) {try {oFile.close();} catch (IOException e) {System.out.println(e.getMessage());}}}}}运⾏结果:这个只是读出来的内容的结果。

properties文件乱码的解决方法

properties文件乱码的解决方法

序号一、问题描述:在开发过程中,我们经常会使用到properties文件来存储配置信息。

然而,有时候我们会遇到properties文件乱码的情况,导致配置信息无法正确读取。

那么,对于properties文件乱码的问题,我们应该如何解决呢?序号二、问题原因:1. 字符编码不一致:在不同的操作系统或编辑器下,可能会出现字符编码不一致的情况,导致properties文件乱码。

2. 属性文件保存时使用了非UTF-8编码:在保存properties文件时,如果使用了不支持的编码格式,也会导致乱码问题。

序号三、解决方法:针对上述问题,我们可以采取以下方法来解决properties文件乱码的情况:1. 使用正确的字符编码:在编写和保存properties文件时,要确保使用统一的字符编码格式,推荐使用UTF-8编码。

2. 使用专门的工具进行转换:可以使用一些专门的工具来进行字符编码的转换,如Notepad++等文本编辑器,通过转换编码格式来解决乱码问题。

3. 使用Java代码进行转换:可以编写Java代码来读取properties文件,并在读取时指定正确的字符编码格式,以解决乱码问题。

序号四、示例代码:以下是使用Java代码进行转换的示例:```javaimport java.io.*;import java.util.Properties;public class PropertiesFileReader {public static void main(String[] args) {try {// 读取properties文件InputStream inputStream = newFileInputStream("config.properties");InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);Properties properties = new Properties();properties.load(bufferedReader);// 获取属性值String value = properties.getProperty("key");System.out.println(value);} catch (IOException e) {e.printStackTrace();}}}```在上面的示例中,我们使用了InputStreamReader来指定了UTF-8的字符编码格式,从而解决了properties文件乱码的问题。

properties中文乱码的解决方法

properties中文乱码的解决方法

解决properties文件中中文乱码的问题,可以尝试以下方法:
1. 确保properties文件的字符编码为UTF-8。

在编辑器中打开properties文件,检查或修改文件的字符编码为UTF-8。

2. 如果properties文件本身没有问题,那么可能是程序读取输出时出现了问题。

在这种情况下,可以尝试在读取和写入properties文件时指定正确的字符编码。

3. 如果以上方法仍然无法解决问题,可以尝试在properties文件中手动添加注释,指定字符编码为UTF-8。

例如,在properties文件的开头添加以下注释:
```
# encoding: UTF-8
```
4. 如果以上方法仍然无法解决问题,可以尝试将properties文件转换为其他编码格式,然后再转换回UTF-8。

这可以通过一些文本编辑器或在线工具完成。

请注意,以上方法可能因具体情况而有所不同,需要根据具体情况进行尝试和调整。

JAVA读写文件,中文乱码

JAVA读写文件,中文乱码

代码动态生成利器ASM-JSPJAVA读写文件,中文乱码JAVA 2009-10-23 20:12:41 阅读577 评论0 字号:大中小订阅最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。

然后,替换相关标签写到指定的文件中。

无论是读写,都遇到了中文乱码问题。

试过多种方法,发现下面一种可以避免中文乱码。

(无论读取还是写入一定要进行编码转换。

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

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

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

java中文乱码常见解决方式

java中文乱码常见解决方式

java中⽂乱码常见解决⽅式说明项⽬出现中⽂乱码现象、常见编码解决⽅法如下。

项⽬乱码项⽬⼯作空间在 Windows -> Prefenrences -> General -> Workspace 中进⾏设置在创建项⽬⼯作空间的时候、优先设置编码,在该⼯作空间下创建的项⽬默认遵循⼯作框架配置项⽬编码在 Project -> Resource中设置创建项⽬的时候、设置编码,则项⽬下⽂件都将会和项⽬统⼀页⾯⽂件编码⽂件右键 Properties -> Resource⽂件头编码⽂件头⼀般是HTML、JSP标签头部添加编码JSP:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>HTML:添加在<head>标签⾥⾯<meta http-equiv="Content-Type" content="text/html; charset=utf-8">编辑器编码设置NotePad++编辑器打开⼀个⽂件时候乱码在 菜单 -> 格式记事本存储时,保存为UTF-8格式服务器乱码SpringMVC在web.xml添加<filter><description>字符集过滤器</description><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><description>字符集编码</description><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>Tomcat编码Tomcat 的 conf/server.conf设置编码、设置为:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"URIEncoding="UTF-8"redirectPort="8443" />添加:URIEncoding="UTF-8" 属性请求响应编码设置请求、响应编码//设置获取请求的编码request.setCharacterEncoding("utf-8")//设置服务器端的编码response.setCharacterEncoding("utf-8");//通知浏览器服务器发送的数据格式response.setContentType("text/html;charset=utf-8");字符串编码String oldStr = "编码设置";String newStr = new String(oldStr.getBytes(), "UTF-8");System.out.println("UTF-8编码:" + newStr);JDBC 连接指定编码url=jdbc:mysql://127.0.0.1/database?characterEncoding=UTF-8数据库设置编码编码可选:mysql> set character_set_client=utf8;mysql> set character_set_connection=utf8;mysql> set character_set_database=utf8;mysql> set character_set_results=utf8;mysql> set character_set_server=utf8;mysql> set character_set_system=utf8;mysql> set collation_connection=utf8;mysql> set collation_database=utf8;mysql> set collation_server=utf8;数据库表设置编码创建表的时候、指定编码:DEFAULT CHARSET=UTF8;CREATE TABLE `type` (`id` int(10) unsigned NOT NULL auto_increment,`type_name` varchar(50) character set utf8 NOT NULL default '', PRIMARY KEY (`id`)) DEFAULT CHARSET=UTF8;补充如果出现乱码现象、可对应⽂章修改。

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

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

Java Web项目开发中的中文乱码问题与对策在Java Web项目开发过程中,中文乱码问题是一个常见的挑战。

乱码问题通常发生在将中文数据存储到数据库、从数据库读取中文数据、在页面上展示中文数据等环节,如果不正确处理乱码问题,会导致用户无法正常阅读中文内容,影响用户体验。

下面介绍一些常见的中文乱码问题和对策。

1. 数据库乱码:当将中文数据存储到数据库中时,如果数据库的字符集不是UTF-8,会导致乱码问题。

解决方法是将数据库字符集设置为UTF-8,确保中文数据能够正确存储和读取。

2. 请求参数乱码:当用户提交包含中文字符的表单时,请求参数中的中文字符可能会出现乱码问题。

解决方法是在服务器端统一设置请求参数的编码为UTF-8,可以通过在web.xml文件中添加如下配置实现:```xml<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c lass><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>``````html<meta charset="UTF-8">```4. 文件编码乱码:如果在Java Web项目中读取外部的文本文件,文件的编码可能与项目编码不一致,导致读取中文内容乱码。

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中文乱码问题,这些软件专门设计用于解决文本文件字符集编码的问题,可以自动识别文件的编码格式,并将其转换成指定的编码格式。

myEclipse文件中文乱码问题解决方案

有时候在my eclipse或者eclipse中打开properties文件时会发现其中的中文都是乱码。

这是由于当前的properties文件编码格式不支持汉字造成的。

当这种情况发生时,我们可以按照以下两种方式更改文件的编码格式即可。

方法一可以一次性更改所有项目的properties文件编码格式。

方法二可以根据需要有选择地对某些文件进行更改。

方法一:依次点击windows-preferences-content-text-java properties file,并将弹出窗和右下方的default encoding该为GBK,然后依次点击update-OK关闭弹出窗格即可。

另外,在次窗口中,如果在右侧上方窗格内选择其他文件类型,则可以对其他文件的编码进行全局更改。

方法二:右击某个需要更改的properties文件,选择properties,在弹出窗的左侧树状目录上选择Resource,右下方的text file encoding编辑区内点击other,然后选择GBK(如果没有,可直接手动输入),最后依次点击apply-ok关闭弹出窗口即可。

properties文件乱码的解决方法 -回复

properties文件乱码的解决方法-回复【properties文件乱码的解决方法】乱码问题是在处理properties文件时经常遇到的一个问题,本文将详细介绍properties文件乱码问题的原因以及解决方法,并提供一步一步详细的指导。

1. 引言properties文件是常用的配置文件格式,它使用键值对的方式储存数据,通常以ASCII编码的形式存储文本信息。

然而,当中文等非ASCII字符出现时,就会出现乱码问题。

2. 乱码问题的原因了解乱码问题的原因对于解决问题至关重要。

通常,乱码问题是由于使用了不正确的字符编码导致的。

以下是几种常见的原因:a) properties文件本身使用的字符编码与读取它的程序使用的编码不一致;b) properties文件中的字符编码与IDE或编辑器使用的编码不一致;c) properties文件中的特定字符没有被正确地编码。

3. 解决乱码问题的方法解决properties文件乱码问题,我们需要从多个角度考虑。

下面是一些常用的解决方法:步骤1:确认字符编码的一致性确保properties文件本身使用的字符编码与读取它的程序使用的编码保持一致。

一般情况下,properties文件使用的是ISO-8859-1编码,如果程序读取时使用的是其他编码,就会出现乱码。

步骤2:检查IDE或编辑器的字符编码设置确保IDE或编辑器的字符编码设置与properties文件中使用的字符编码保持一致。

如果两者不一致,就会导致乱码。

可以在IDE或编辑器的设置界面中查找相关选项进行调整。

步骤3:使用正确的字符编码加载properties文件在读取properties文件时,使用正确的字符编码加载文件。

通常,在Java中使用的是Unicode编码,可以通过指定字符集来读取文件。

使用`InputStreamReader`类,并设置特定的字符集来保证正确的编码。

如下所示:javaFileInputStream fis = newFileInputStream("yourPropertiesFile.properties");InputStreamReader isr = new InputStreamReader(fis, "UTF-8");Properties properties = new Properties();properties.load(isr);步骤4:处理特定字符的编码问题如果properties文件中包含特定字符(如中文、特殊符号等),需要确保这些字符被正确地编码。

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页面-程序-数据库为关键点进行检查,以确保编码的一致性。

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