`
xiaoboss
  • 浏览: 650756 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java.io写文件在linux中出现中文乱码的解决

    博客分类:
  • java
 
阅读更多

昨天用java io写个系统的操作日志进txt文件时,遇到这么个问题:在windows系统上测试过了,是没问题的,但是放到服务器(linux系统)上写到文件的中文都变成了乱码!究其原因,原来是这么个情况:linux下默认字符集是gbk,而windows默认编码是utf-8,而java 往文件里面写入中文时是根据系统默认字符集来写的。

    最直接的办法就是在使用java io写文件时强制进行转码。最后是这样写的:
 //得到系统默认的encoding码  
 String fileEncode = System.getProperty("file.encoding"); 
 File outFile = new File(ConfHelper.getConf("OperLogPath")); 
 OutputStreamWriter ow = new OutputStreamWriter( 
 new FileOutputStream(outFile, true), fileEncode); 
 String logStr = "[" + DateUtil.formatDate(new Date()) 
              + "]用户Id=" + loginUser.getId() + ",用户名称=" 
              + loginUser.getUsername() + " 修改彩绣类别 typeid=" 
              + typeid + " 为 [catgery=" + catgery + ",restype=" 
              + restype + ",ressubtype=" + ressubtype + "]\r\n"; 
          ow.write(new String(logStr.getBytes("UTF-8"), fileEncode)); 
          ow.close();
 注意到有些资料说还有一种解决方案就是,修改linux的系统编码字符集:
         修改/etc/sysconfig/i18n 这个文件  
         将LANG="zh_CN.UTF-8"修改为:  
         LANG="zh_CN.GBK"  
         保存并关闭,运行下面的命令使配置生效:  
         shell> source /etc/sysconfig/i18n
但是,这就完全改变了服务器的编码,可能会引起其它效应,所以应慎重。我没有尝试,有需要的话,可以一试。

分享到:
评论

相关推荐

    java操作串口linux环境下Java_gnu_io_RXTXPort_nativeDrain报错解决方案

    java控制串口发送数据时在windows环境下正常,linux环境下报错C [librxtxSerial.so+0x75da] Java_gnu_io_RXTXPort_nativeDrain+0xea,经多方查询验证为rxtx包版本问题,用本文档中的版本可以正常运行

    解决Linux操作系统下Java的中文乱码问题

    在Linux操作系统中,Java应用程序处理中文字符时可能会遇到乱码问题。这主要涉及到编码格式的不匹配,因为Linux系统默认采用UTF-8编码,而某些Java应用或文件可能使用了GB2312、GBK或其他编码。本篇将详细介绍如何...

    java读取文件中文乱码

    在Java编程中,读取包含中文字符的...通过理解和应用这些知识点,你可以有效地解决Java读取文件时出现的中文乱码问题。在实际开发中,对文件编码的理解和处理是至关重要的,能够确保程序正确地处理各种语言和字符集。

    java解析文件乱码解决

    在Java编程中,解析文件时可能会遇到乱码问题,这通常是由于字符编码不匹配或处理不当导致的。本文将深入探讨如何解决Java中文件解析时出现的乱码问题。 首先,理解字符编码至关重要。常见的字符编码有ASCII、ISO-...

    java中FileOutputStream中文乱码问题解决办法

    总之,当使用Java的`FileOutputStream`处理包含中文字符的文本时,需要通过`OutputStreamWriter`将其转换为字符流,并指定正确的字符编码(如UTF-8),这样才能确保中文字符在文件中正确显示,避免出现乱码。

    Java 解决中文路径问题

    在Java编程中,处理中文路径问题是一个常见的挑战,尤其是在Windows操作系统环境下。中文字符在路径中可能会引起编码问题,导致程序无法正确读取或写入文件。这个问题主要涉及到字符编码、文件I/O操作以及系统环境的...

    hibernate 自动导入 sql 文件 import.sql 国际化编码的问题的解决方案

    为了确保在Windows平台上也能正确处理UTF-8编码的`import.sql`文件,并避免控制台乱码的问题,可以采取以下解决方案: 1. **文件命名策略:** 在项目类路径根目录下创建一个以`.UTF-8`作为扩展名的文件,例如`...

    JAVA API中文帮助文档UTF-8编码格式,支持Linux操作系统

    本资源包含的Java API中文帮助文档,是针对Linux环境优化的,这意味着开发者在Linux环境下查阅这些文档时,无需担心因编码问题导致的乱码现象。这对于在Linux服务器上进行Java开发的程序员来说,是一个非常实用的...

    java文件操作

    4. **文件路径**:在不同的操作系统中,文件路径的分隔符可能会不同,如Windows使用`\`而Linux使用`/`,因此建议使用`File.separator`来构建跨平台的路径字符串。 综上所述,Java提供了强大的API来处理文件操作任务...

    中文乱码.docx

    在开发过程中,经常遇到中文显示出现乱码的问题。这类问题通常源于字符编码的不一致导致的数据解析错误。例如,在Windows环境下,默认的字符编码是GBK,而在程序中进行输入输出操作时(即IO流),常常会将字符编码...

    Java文件流的常见错误

    在Java编程中,文件流是处理输入/输出操作的核心部分,尤其在读写文件时。然而,新手开发者或经验不足的程序员经常会遇到一些常见的错误,这些错误可能导致程序崩溃、数据丢失或者性能问题。本篇文章将深入探讨Java...

    Java编程中的中文问题.pdf

    Java编程中的中文问题主要围绕如何在Java程序中正确处理和显示中文字符,包括在不同环境下(如Windows、Linux、Web应用等)的编码转换问题,以及与数据库等外部系统交互时的字符编码问题。在Java开发中,由于Java采用...

    java-编写跨平台Java程序注意事项

    应使用`java.io.File`类或`java.nio.file.Path`类中的方法来处理文件路径。 - 例如,使用`java.io.File.separator`获取当前平台的路径分隔符,或者使用`java.nio.file.Paths.get(path).toString()`来获取规范化路径...

    解压jar,zip,压缩支持中文zip

    在IT行业中,压缩和解压缩文件是常见的操作,特别是在处理大型项目或传输大量数据时。本文将详细讨论如何解压`jar...无论是在命令行还是编程环境中,遵循这些步骤都可以有效地解决解压缩过程中可能出现的中文乱码问题。

    Java IO流 文件的编码实例代码

    Java IO流文件编码是Java语言中的一种文件编码方式,它可以将文件转换成不同的编码格式,以便在不同的平台和系统中使用。在Java中,文件编码可以使用不同的方式,包括使用getBytes()方法将字符串转换成字节序列,...

    jxl操作excel文件

    1. **中文支持优秀**:jxl 在处理中文字符时,不会出现乱码问题,非常适合需要大量处理中文内容的应用场景。 2. **平台无关性**:jxl API 完全基于 Java 实现,可以在任何支持 Java 的操作系统上运行,包括 Windows...

    Hive1.2.1安装指南

    **原因分析**:该错误通常是因为`hive-site.xml`文件中配置了包含`${system:java.io.tmpdir}`和`${system:user.name}`这样的系统属性,但在实际解析时未能正确转换。 **解决方法**: 1. **检查hive-site.xml配置**...

    Java实现将txt文件转成xls文件的方法

    在本篇文章中,我们将介绍如何使用Java实现将txt文件转成xls文件的方法。这篇文章具有很好的参考价值,对大家有所帮助。下面让我们跟随小编一起看看吧。 首先,我们需要了解为什么需要将txt文件转成xls文件。txt...

    E06_IO复习.pdf

    在Java编程中,I/O(Input/Output)是处理数据传输的关键部分,涉及文件操作、网络通信等场景。以下是对E06_IO复习内容的详细解释: 1. 获取系统路径分隔符和名称分隔符: 在Java中,我们可以使用`File....

Global site tag (gtag.js) - Google Analytics