`
ltteye
  • 浏览: 3072 次
文章分类
社区版块
存档分类
最新评论

java读取文件遇到的乱码问题(UTF-8转GBK)

阅读更多
问题:
UTF-8格式的文件,在xp环境下读入,判断有问题,通过new String(utf8_txt.getBytes(),”UTF-8”)转换存在部分文字丢失的问题,即有一部分字为??。
分析:
utf-8文件如果用字节流读入,用字节流输出,没有任何问题。但是当要处理utf-8文件时,采用字符流就涉及到了编码问题。事实上编码是一件很混乱的事。utf-8的编码更奇葩,因为它占用的byte大小可能是1字节,2字节,3字节。而其他编码也各有各的规则。但有一条规则我觉得是要明确的,转码要防止多次转换。
上面我遇到的问题其实经过了两次编码;首先是字符本身为UTF-8,其次utf8_txt.getBytes()返回了经过GBK编码的字节(默认编码),所以字节成为了经过UTF-8和GBK双重编码;当使用“UTF-8”后,直接解码,会导致出现部分字符无法解析。
解决方案:
有如下两种方法:
1.更改默认的环境编解码:启动虚拟机时可以添加配置参数-Dfile.encoding=UTF-8;
2.直接用字节流读取字符串到byte[]数组中,然后用new String(b,”UTF-8”)完成解码。
注意:千万用字符流读取,在用String.getBytes()函数转化成byte[]数组,查看getBytes函数的源码,你会发现它有默认编码的功能。
分享到:
评论

相关推荐

    java 编码 UTF-8、ISO-8859-1、GBK

    例如,读取文本文件时,应使用`InputStreamReader`和合适的编码参数,如`new InputStreamReader(new FileInputStream(file), "UTF-8")`。 总结,理解并正确处理Java中的字符编码问题,需要关注整个数据流程,从...

    简单的UTF-8与GBK之间相互转码工具

    这个名为`encoding_p.java`的Java源代码文件,应该包含了一个简单的类或函数,用于实现文件从GBK到UTF-8,以及从UTF-8到GBK的转换。在Java中,我们可以使用`java.nio.charset`包中的`Charset`和`CharsetDecoder`、`...

    文件编码转换(utf8与gbk相互转换)

    # 读取GBK文件并转换为UTF-8 with codecs.open('原文件.gbk', 'r', encoding='gbk') as f_in: content = f_in.read() # 将内容编码为UTF-8并写入新文件 with codecs.open('新文件.utf8', 'w', encoding='utf-8') ...

    eclipse中class乱码GBK-UTF-8转换工具

    然而,当涉及到字符编码时,如GBK和UTF-8之间的转换,可能会遇到乱码问题。这篇博客文章“eclipse中class乱码GBK-UTF-8转换工具”正是为了解决这个问题。 GBK是GB2312的扩展,包含了更多的汉字和其他字符,主要在...

    utf-8码转换器(转换成utf-8码)

    如果一个GBK编码的文本包含非GBK字符,使用UTF-8编码器读取会出现乱码。因此,通过转换器将GBK编码转换为UTF-8编码,可以确保文本在各种系统和语言环境中都能正确显示。 4. **编码转换工具的实现**: - 接收输入:...

    批量转javaGBK编码文件到UTF-8

    总的来说,从GBK编码转换到UTF-8是解决Java源代码在Eclipse中可能出现的乱码问题的有效方法。通过编写Java程序或使用Eclipse插件,可以方便地对整个项目进行批量转换,确保所有文件都以正确的编码格式存储和处理。...

    java读写csv文件,中文乱码问题

    2. **Java读取CSV文件**: - 使用`BufferedReader`和`InputStreamReader`组合,可以指定字符编码读取文件。例如: ```java FileInputStream fis = new FileInputStream("path_to_file.csv"); InputStreamReader ...

    GBK转UTF-8

    5. 替换原始文件:如果设置允许,工具可能会替换原始GBK文件,确保整个工程变为UTF-8编码。 6. 记录日志:在整个过程中,工具会记录每一步的细节,方便用户了解转换情况。 在实际操作中,使用这样的工具需要谨慎,...

    gbk转utf-8批量转换

    2. **编写转换脚本**:对于熟悉编程的人来说,可以编写Python、Java、Perl等语言的脚本来批量读取GBK编码的文件,然后用UTF-8重新写入。Python的`codecs`库提供了方便的读写功能,如`codecs.open()`。 3. **使用...

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

    "Java读取TXT文本文件乱码解决方案" Java 读取 TXT 文本文件乱码解决方案中,主要讨论的是在 Java 中读取 TXT 文本文件时出现乱码的问题,并提供了解决方案。 首先,文章中提供了一个简单的读取 TXT 文件的代码,...

    java读取文件中文乱码

    8. 文件操作最佳实践:在编写程序时,尽可能使用UTF-8编码,因为它是现代开发中最普遍使用的编码格式,兼容性好,能避免很多乱码问题。 9. IDE设置:确保你的IDE(如Eclipse、IntelliJ IDEA)和构建工具(如Maven、...

    如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程.zip

    5. **处理源代码**:如果工程包含Java源代码,需要确保IDE的编码设置也是UTF-8,避免编译时出现乱码问题。MyEclipse中可以在“Window” -> “Preferences” -> “General” -> “Workspace”中设置默认文本文件编码...

    批量将Java源代码文件的编码从GBK转为UTF-8

    标题提到的“批量将Java源代码文件的编码从GBK转为UTF-8”是一个常见的需求,因为GBK编码是中国大陆广泛使用的编码方式,但它并不兼容Unicode,而UTF-8编码则是一种更通用的Unicode实现,能兼容多种语言字符。...

    Delphi中UTF-8,Unicode格式转换

    delphi7调用delphi2009生成的dll文件会出现乱码问题。是unicode的原因 终于找到了UTF-8、Unicode格式转换函数

    如何将文本转换为UTF-8码 .e.rar

    - **Python**:使用`codecs`模块,如`codecs.open('原文件.txt', 'r', 'GBK').read()`读取GBK文件,再用`codecs.open('新文件.txt', 'w', 'utf-8')`写入UTF-8。 - **Java**:使用`java.nio.charset.Charset`类,如...

    java读写excel包括utf8转码为可识别汉字gbk

    java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel

    最全的编码问题,乱码问题,uft-8

    1. **源代码文件编码不一致**:开发环境中如果源代码文件的编码格式不一致(例如,有的文件使用UTF-8,有的文件使用GBK),很容易导致读取或解析时出现乱码。 **解决方案**: - 在Eclipse等IDE中统一设置所有源...

    java读取文件免除乱码

    总结,解决Java读取文件时的乱码问题,关键在于明确文件的编码格式并正确地在代码中指定。通过使用不同的IO类库和工具,以及自定义的编码检测方法,我们可以有效地处理各种编码的文件,确保数据的正确性。

    彻底解决JAVA读取写入 TXT中文乱码问题 源码

    要解决Java读取TXT文件中文乱码的问题,关键在于指定正确的编码方式。以下是使用`BufferedReader`和`FileReader`读取UTF-8编码的TXT文件的示例: ```java import java.io.BufferedReader; import java.io....

Global site tag (gtag.js) - Google Analytics